2016-04-04 10 views
0

私の最新のプロジェクトでは、Android電話でユーザー名とパスワードを入力し、JSON形式で保存し、新しいJSONで構成データを返すASP.NET MVCサーバーにPOSTしたいと考えています。ここでJSON文字列がちょうどテストのためであるJSONをAndroidからMVCコントローラに渡すにはどうすればいいですか?

String json = "{\"x\": \"val1\",\"y\":\"val2\"}"; 
URL url = new URL("http://xxxxx/Home/GetData"); 
HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
conn.setConnectTimeout(5000); 
conn.setReadTimeout(10000); 
conn.setRequestMethod("POST"); 
conn.setRequestProperty("Content-Type", "application/json");  // have tried without this 
conn.setRequestProperty("Content-Length", json.getBytes().length + ""); 
conn.setDoOutput(true); 

os = conn.getOutputStream(); 
os.write(json.getBytes("UTF-8")); 
os.close(); 

conn.connect(); 

アンドロイド(部分コード):私は持っている、これまで

MVC:

[HttpPost] 
public ActionResult GetData(String request) 
{ 
    Debug.WriteLine(request.Length); // not relevant to the question 

    var data = new { Name = "Test", Age = "39" }; 
    return Json(data); 
} 
テストデータをJSONを返し

MVCコントローラの文字列引数が間違っている可能性があります。私は受け入れを試みました。バイト[]、私はいつもNULLで終わる。

代替案のご提案やご提案はありがとうございます。

乾杯

答えて

0

これは、サーバーにポストされているものである場合:

{ 
    "x": "val1", 
    "y": "val2" 
} 

次にメソッドのパラメータは、それらのキー/値のペアを反映すべきです。このようなもの:

public ActionResult GetData(string x, string y) 
+0

にsendtているいただきました!あなたは何掲示されていることは、元の文字列のバイトシーケンスであるか見当もつかないとき@デイヴィッドのようなもののについて。私の問題はコントローラーで受信する方法です(これはjsonの内容についてはわかりません)。 – ludolover

+0

@ludolover: "元の文字列からのバイト"のために、投稿要求の内容本文が何とか異なっていますか?リクエスト本体に単純なJSONを送信するのと比べて、実際のリクエストはどのように見えますか?このデータ・サーバー側では、サーバー側のコードがその構造を認識していないということで何をしていますか? – David

0

これは、jsonに投稿するすべてのものを通過します。 PrettuずっとGetData

public ActionResult GetData() 
{ 
    foreach (var key in Request.Form.AllKeys) 
    { 
     //This will iterate through everything in your post data 
     var value = Request.Form[key]; 
    } 
} 
+0

Hehe :)まあ、私はまだArgumentNullExceptionを取得しています...コントローラの引数やURLリクエストのパラメータが不足している可能性がありますか?コントローラーはリクエストの本文にあるデータを見つけることができるはずです。 – ludolover

関連する問題