0

私の問題は、サーバー側で正しく入力されたオブジェクトを受信できないことです。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"}.

誰でも私を助けることができますか?

4

0 に答える 0