将NameValuePair分隔符从“=”更改为“:”

时间:2013-09-21 19:17:54

标签: java android httprequest

我正在尝试发送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}]

你会注意到,而不是等于(=)的符号,有冒号(:)分隔键/值对。

我的问题是:我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

您可以考虑使用JSONObject而不是UrlEncodedFormEntity - 因为它看起来像您需要JSON字符串,而不是URL编码字符串。

答案 1 :(得分:0)

更好的方法是将json字符串序列化为字典。可以通过字典索引访问的json结构数据。