2012-02-21 21 views
1

I WCFサービスを経由してデータベースに二つのフィールドを挿入する必要があり、次のコードを持っていますが、私はEclipseでテストしたときに、私は405の方法不可エラーが発生します。 WCFは、フィドラーと私のテストC#のWebクライアントの両方から作品AndroidのWCFメソッドは許可されていません

、私は唯一の問題は、このコードであってもよいと信じて私をリードし、自分の携帯電話を経由してアンドロイドからエラーが出ます!

HttpPost request = new HttpPost("http://www.mysite.com/myservice.svc/postname?fname=fred&lname=frognoggle"); 

request.setHeader("Accept", "application/json"); 
request.setHeader("Content-type", "application/json"); 

DefaultHttpClient httpClient = new DefaultHttpClient(); 
HttpResponse response = httpClient.execute(request); 

Log.d("WebInvoke", "Saving : " + response.getStatusLine().getStatusCode()); 

誰かが私に見逃すことができます!

私はフィドラーでのポストをやっていると私が投稿した場合

編集:それはすべての罰金作品を作品

http://www.mysite.com/myservice.svc/postname?fname=fred&lname=frognoggle 

乾杯、

マイク。

+0

のようなコンテンツタイプに対応する必要があります私はあなたがこのようにPOSTをすることができないと言っていませんでした。私はあなたのコメントをする前にこれを更新しました(おそらくほぼ同じ時期に)。 POSTはうまく動作するはずです(私は、体を設定せずにそれを試したことはないと思う)。あなたの体を設定していないので、コンテンツの長さや何かを設定していないのだろうかと思っています。否決しかし、あなたがしたい場合、コードは私が知っていると私はそれを再投稿します。 –

+0

雅がコードを否決することはできません、それは絵のようなものだし、それは1000の言葉を伝えます!!!あなたは再びそれを投稿してくださいことはできますか?私もあなたを考えます私はContent-Lengthを追加しないと、Content-Lengthに関して何かをするかもしれませんが、私はContent-Lengthを追加しません。エラー411、oh la la ... LOL。 –

+0

ありがとうMike、コードが助けてくれることを願っています。それはフィドラーとC#はそれに満足していた。それは私が私のWebサービスにOperationContractで私のUriTemplateを書いていた方法によるものであった。あなたはどのようなWebサーバーを実行している?取り組ん? –

答えて

1

更新:要求によってバック。以下のコードは、Android上でJSON POSTを作成するために使用しているコードで、私のために働いています。

あなたはあなたのAndroidのコードでHTTP POSTを行っています。あなたもフィドラーでPOSTをやっていますか、GETしていますか?私が尋ねる理由は、あなたの投稿であなたの身体を送るのではなく、クエリ文字列を設定することだけです。私はJSON POSTを行うAndroidコードをWCFサービスに含めました。

希望これは、あなたがより多くの情報を投稿する場合、私は助けと答えを更新して喜んでいるでしょう...

に役立ちます。

public JSONObject sendPOSTurl(String url, JSONObject data) throws JSONException 
    { 
     HttpClient httpclient = new DefaultHttpClient(); 
     HttpPost httppost = new HttpPost(url); 
     HttpResponse response; 

     try 
     { 
      StringEntity se = new StringEntity(data.toString()); 

      httppost.setEntity(se); 
      httppost.setHeader("Accept", "application/json"); 
      httppost.setHeader("Content-type", "application/json"); 

      response = httpclient.execute(httppost); 

      HttpEntity entity = response.getEntity(); 

      if (entity != null) 
      { 
       InputStream instream = entity.getContent(); 
       String result = convertStreamToString(instream); 

       instream.close(); 
       return new JSONObject(result); 
      } 
     } 
     catch(Exception e) 
     { 
      Log.e("REST", "Failed to POST data", e); 
     } 

     return null; 
    } 

public static String convertStreamToString(InputStream is) 
{ 
    BufferedReader reader = new BufferedReader(new InputStreamReader(is)); 
    StringBuilder sb = new StringBuilder(); 

    String line = null; 
    try 
    { 
     while ((line = reader.readLine()) != null) 
     { 
      sb.append(line + "\n"); 
     } 
    } 
    catch (Exception e) 
    { 
     e.printStackTrace(); 
    } 
    finally 
    { 
     try 
     { 
      is.close(); 
     } 
     catch (Exception e) 
     { 
      e.printStackTrace(); 
     } 
    } 
    return sb.toString(); 
} 
+0

ありがとうブライアン、私は上記の編集を追加しました。必要があればさらにコードを表示することができます! –

+0

Hein Brainとコードに感謝しますが、あなたはAndroid/JavaアプリからWCFサービスに多くの名前の値のペアを送信できないと言っていますか? –

0
http://www.mysite.com/myservice.svc/postname?fname=fred&lname=frognoggle 

なしurlはHTTPGET

あなたはHttpPostを使用したい場合は、あなたを置く必要があるのparamでHttpEntityのように見えている、あなたはparamがJSON

関連する問題