私の問題は、サーバー側で正しく入力されたオブジェクトを受信できないことです。null になります。
ここに私のアンドロイドコードがあります:
DefaultHttpClient httpclient = new DefaultHttpClient();
HttpPost httpost = new HttpPost(getputServiceUrl());
Gson holder = new Gson();
StringEntity se = null;
try {
se = new StringEntity(s);
} catch (UnsupportedEncodingException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
httpost.setEntity(se);
httpost.setHeader("Accept", "application/json");
httpost.setHeader("Content-type", "application/json; charset=utf-8");
try {
ResponseHandler responseHandler = new BasicResponseHandler();
HttpResponse response = httpclient.execute(httpost, responseHandler);
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
私のwebapiコード:
public HttpResponseMessage Post(Usuario usuario)
{
try
{
context.Usuarios.Add(usuario);
context.SaveChanges();
var response = Request.CreateResponse(HttpStatusCode.Created, usuario);
response.Headers.Location = new Uri(Request.RequestUri, string.Format("usuario/{0}", usuario.Id));
return response;
}
catch (Exception ex)
{
var contextLog = new showaboutmeDBEntities();
contextLog.Logs.Add(new Log()
{
error = "Message: " + ex.Message + "\n\n\n\nStack Trace:" + ex.StackTrace +
"\n\n\ninner: " + ex.InnerException + "\n\n\nSource:" + ex.Source + "\n\n\nTarget: " + ex.TargetSite +
"\n\n\n\n\n\n\n\n\n\n\n\n" + JsonConvert.SerializeObject(usuario)
});
contextLog.SaveChanges();
}
return Request.CreateResponse(HttpStatusCode.BadRequest);
}
私が間違っているのは何ですか?
私はこれについて多くのことをグーグルで調べましたが、これを行う方法が見つかりません。
私のサーバー側では、オブジェクト null を受け取りました。
これは私のjsonデータです:
[{"IMEI":"353317051196773","facebookId":"444401625902459","facebookNome":"Teste Teste","facebookSexo":"male","facebookUserName":"teste.teste.3","googleEmail" :"teste@gmail.com","id":"80e8aa9d-8c39-43d9-a3c7-a851661c87f3"}]
httprequest ヘッダーは次のとおりです。
ヘッダー: 接続 = Keep-Alive Accept = application/json Host = showaboutme.azurewebsites.net Max-Forwards = 10 User-Agent = Apache-HttpClient/UNAVAILABLE X-LiveUpgrade = 1 X-MS-REQUEST-ID = 856f5220-9e84- 4480-b2a3-26cf563ba4b7 X-Original-URL = /api/usuario X-Forwarded-For = 189.83.1.142:64031 X-ARR-LOG-ID = e19abeb1-54cd-45c5-8dbb-c034588d0098 Contenty ヘッダー: Content-Length = 267 コンテンツ タイプ = アプリケーション/json; 文字セット=utf-8
ここで私のサーバー側のエラー:
メッセージ: 値を null にすることはできません。パラメーター名: エンティティ スタック トレース: System.Data.Entity.ModelConfiguration.Utilities.RuntimeFailureMethods.Requires(Boolean condition, String userMessage, String conditionText) で System.Data.Entity.DbSet`1.Add(TEntity エンティティ) で ShowMe。 Controllers.UsuarioController.Post(Usuario usuario) 内部: ソース:EntityFramework ターゲット: Void Requires(Boolean, System.String, System.String) null
問題はjsonデータにあると思います。私の調査とテスト中に、json データに 2 つの属性のみを渡すと、正常に動作し、サーバー側のパラメーターが正しく入力されます。次のような json データを使用: {"IMEI":"353317051196773","facebookId":"444401625902459"}.
誰でも私を助けることができますか?