2012-03-25 8 views
0

:いくつかのより多くの実験を行った後POST(ODataの)

、私はすべての値をJSON文字列に引用されている場合は、要求にのみ動作することを発見しました。それは、これが

{"Text":"test","RatingValue":0.0,"LocationID":5} 

を動作しませんと言うことであり、これは

{"Text":"test","RatingValue":"0.0","LocationID":"5"} 

何が理由であることを理解していないだろう。最初の文字列は有効なJSON文字列のようです。これはWCFの特質ですか?

オリジナルポスト

私はアンドロイドのコレクションに新しいアイテムを投稿しようとしています。私は400のレスポンスコードを得続けます:悪い要求。私は何が間違っているのか分からず、誰かが私を助けてくれることを望んでいました。ここにJavaコードがあります。

HttpURLConnection conn = (HttpURLConnection) uri.toURL().openConnection(); 
conn.setRequestProperty("Content-Type", "application/json; charset=utf-8"); 
conn.setRequestProperty("Accept", "application/json"); 
conn.setRequestProperty("User-Agent", userAgent); 
conn.setChunkedStreamingMode(0); 
conn.setDoInput(true); 
conn.setDoOutput(true); 

conn.setRequestMethod("POST"); 
conn.connect(); 

DataOutputStream out = new DataOutputStream(conn.getOutputStream()); 
out.write(data.getBytes()); 
out.flush(); 

int code = conn.getResponseCode(); 
String message = conn.getResponseMessage(); 

conn.disconnect(); 

データは、次のようなJSON文字列です:

{"Text":"test","RatingValue":3.0,"ReviewID":0,"LocationID":5} 

ReviewIDが主キーであるこの場合。

リクエストのURLは、レーティングのコレクションを指します。同じ場所をブラウザに貼り付けると、コレクションが正常に照会されます。それは次のようになります。

http://localhost/DataService.svc/Ratings 
+0

BORT、uはあなたがこのJSONオブジェクト 'データを準備しているいくつかのコードを投稿することができます'? –

+0

エラー応答の本文にメッセージが返されましたか?もしそうなら、あなたの投稿を編集してそれを含めてください。副作用では、ほとんどのRESTサービスは、作成要求の一部として主キーを受け入れません。サービスはそれを窒息させるかもしれません。 – Perception

+0

詳細なエラーメッセージを有効にして、ここに投稿してください。http://blogs.msdn.com/b/phaniraj/archive/2008/06/18/debugging-ado-net-data-services.aspx –

答えて

0

はこれを試してください:あなたは、このJSONを投稿しているか

HttpClient hc = new DefaultHttpClient(); 
HttpPost hp = new HttpPost("http://localhost/DataService.svc/Ratings"); 
HttpResponse hr; 
JSONObject jo1 = new JSONObject(); 
joobject.put("Text", "test"); 
joobject.put("RatingValue", "3.0"); 
joobject.put("ReviewID", ".0"); 
joobject.put("LocationID", ".5"); 
StringEntity se = new StringEntity(joobject.toString(),HTTP.UTF_8); 
se.setContentType("application/json"); 
hp.setEntity(se); 
hr = hc.execute(hp); 

多分役に立つ

+0

私はまだこのメソッドで400:Bad Requestレスポンスを取得しています。 – Bort

+0

私の編集を参照してください私の答えは 'HttpPost'で更新されているか、あなたのWCFサービスが実行されているかどうかを確認してください。 –