2

私はHttpPostリクエストを送信しようとしています。これを行うには、私が理解していることから、次のようにします。

            HttpClient httpClient = new DefaultHttpClient(); 
            HttpPost post = new HttpPost(uri[0]); 
            try {
                List<NameValuePair> nvp = new ArrayList<NameValuePair>(); 
                nvp.add(new BasicNameValuePair("{\"UserName\"", "\"michigan\""));
                nvp.add(new BasicNameValuePair("\"Password\"", "\"fanaddicts\""));
                nvp.add(new BasicNameValuePair("\"DeviceHarwareId\"", "\"NW58xfxz/w+jCiI3E592degUCL4=\""));
                nvp.add(new BasicNameValuePair("\"DeviceTypeId\"", "\"1\"}"));
                post.setEntity(new UrlEncodedFormEntity(nvp));

                response = httpClient.execute(post); 

                Log.i("Feed Response", "Feed: " + response.getStatusLine().getStatusCode()); 

            } catch (UnsupportedEncodingException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (ClientProtocolException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } 

私が抱えている問題は、エンティティが次のようになっていることです。

[{"UserName"="michigan", "Password"="fanaddicts", "DeviceHarwareId"="NW58xfxz/w+jCiI3E592degUCL4=", "DeviceTypeId"="1}]

しかし、サーバーのセットアップ方法により、次のようにする必要があります。

[{"UserName":"michigan", "Password":"fanaddicts", "DeviceHarwareId":"NW58xfxz/w+jCiI3E592degUCL4=", "DeviceTypeId":"1}]

キーと値のペアが等号 (=) ではなくコロン (:) で区切られていることがわかります。

私の質問は次のとおりです。これを修正するにはどうすればよいですか?

4

2 に答える 2

1

URL エンコードされた文字列ではなく、JSON 文字列が必要なように見えるため、UrlEncodedFormEntity の代わりにJSONObjectを使用することを検討してください。

于 2013-09-21T20:16:57.300 に答える
0

より良い方法は、json 文字列を辞書にシリアル化することです。辞書のインデックスからアクセスできる json 構造体データ。

于 2021-05-31T14:04:46.757 に答える