アンドロイド携帯に保存されている情報をWCFサービスに保存しようとしています。私は電話から400エラーが発生していると私は私のlocalhost上でテストするときに私のVisual Studioのポップアップは、私の保存メソッドでnullポインタをポップアップを使用して、サーバーに同じ要求を送信しようとするとき。私はTシャツにこの例を、以下、そのだけで動作していないよ:TutorialJSON 400不良リクエストとヌルポインタを使用してAndroidからWCFへ
ここに私のコードの一部: をここに私のユーザーオブジェクトは、WCFサービスであります。私のIService
で[DataContract]
public class User
{
[DataMember(Name= "userid")]
public int UserId { get; set; }
[DataMember(Name = "username")]
public string username { get; set; }
[DataMember(Name = "password")]
public string password { get; set; }
[DataMember(Name = "information")]
public Byte[] information { get; set; }
}
運用契約が
[OperationContract]
[WebInvoke(Method = "POST",
BodyStyle = WebMessageBodyStyle.Bare,
ResponseFormat = WebMessageFormat.Xml,
RequestFormat= WebMessageFormat.Json,
UriTemplate = "saveUser")]
Boolean saveUser(User user);
^このメソッドは、ユーザーがnullなのでnullポインタを投げています。 WebMessageBodyStyleをWrappedRequestに変更しようとしましたが、それは役に立ちません。
HERESにPOSTリクエストを送信するためのアンドロイドコード:
JSONStringer user = new JSONStringer()
.object()
.key("user").object()
.key("userid").value("1").key("username").value(appState.getCurrentUser().username)
.key("password").value(appState.getCurrentUser().password)
.key("information").value(str.toString())
.endObject()
.endObject();
StringEntity entity = new StringEntity(user.toString());
HttpPost request = new HttpPost(new URI(url));
request.setHeader(HTTP.CONTENT_TYPE, "application/json");
request.setHeader("Accept", "application/json");
request.setEntity(entity);
HttpResponse response = httpClient.execute(request);
^応答は私に、サーバーから400エラーを与えています。
は、ここではlocalhostにJSONを送信するシオマネキです:Here's the picture は、私は、コンテンツの長さを追加しましたが、絵で、それはそれが本当に任意の助けをいただければ幸い 86で0を言います。あなたは、私はバイト[]それは本当に文字列とするときJSONオブジェクトだったを送ったかを見れば
POST http://localhost/SampleApp/Service1.svc/saveUser HTTP/1.1
Content-Type: application/json
Host: localhost
{"userid":1,"username":"testuser","password":"testpassword","information":null}
代わりに 'JSONObject'と' JSONObject.toString() 'を使うことをお勧めします。もっと明確で便利です。 –
Fiddlerを使用してリクエストを検査しようとしましたか? – Rajesh
私は下部にフィドラー – slai47