Android:使用JSON将数据发布到Web服务

时间:2011-12-16 08:39:19

标签: android json

在我的代码中,我将数据发布到web服务,但我从webservice获得的响应是​​指定的数据是空的。这意味着我的请求正在由webservice处理,但是它无法获取相应的键值。

代码:

Button b1=(Button)findViewById(R.id.button1);
        b1.setOnClickListener(new OnClickListener()
        {

            public void onClick(View v) {
                String gaurav ="new_member="+"[{\"email\":\"sinhagaurav@gmail.com\",\"username\":\"gaurav001\",\"pwd\":\"gaurav001\"}]";  
                // TODO Auto-generated method stub
                HttpClient httpclient = new DefaultHttpClient();   
                HttpPost httppost = new HttpPost("url");  

try{ 
    String d="saurav@gmail.com";
                    JSONObject json = new JSONObject(); 

                    json.put("gaurav", gaurav); 
                   // json.put("api_token",settings.getString("api_token", "")); 
                    StringEntity se = new StringEntity(json.toString()); 
                    httppost.setEntity(se); 
                    httppost.setHeader("Accept", "application/json");
                    httppost.setHeader("Content-type", "application/json");
                   se.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE, "application/json")); 


                    HttpResponse response = httpclient.execute(httppost);   
                    HttpEntity responseEntity =response.getEntity(); 

                    Log.e("USER", EntityUtils.toString(responseEntity).trim()); 
} catch (UnsupportedEncodingException e11) { 
                    // TODO Auto-generated catch block 
                    Log.e("USER", e11.getMessage()); 
                } catch (ClientProtocolException e11) { 
                    // TODO Auto-generated catch block 
                    Log.e("USER", e11.getMessage()); 
                } catch (IOException e11) { 
                    // TODO Auto-generated catch block 
                    Log.e("USER", e11.getMessage()); 
                } catch (JSONException e11) { 
                    // TODO Auto-generated catch block 
                    e11.printStackTrace(); 
                }   

            }

        }
                );

服务器的响应是:

12-16 13:59:47.542: E/USER(1257): [{"errorcode":"012"}]

来自服务器的响应列表:

012 You must enter your e-mail address
013 You must enter your username
014 The username you chose is already taken
015 Your e-mail address is invalid
016 The e-mail address you entered is already taken
017 You must enter a password   
025 Your username should have at least 4 characters
024 Username can only contain letters A-Z and numbers 0-9

我感觉一切都很顺利,要么是我的弦乐器;字面意思是问题。她是我必须根据网络服务规范传递的字符串:

new_member = [{ “电子邮件”: “sinhagaurav@gmail.com”, “用户名”: “gaurav001”, “PWD”: “gaurav001”}]

我已经尝试了很多次但仍然得到错误代码:12。

1 个答案:

答案 0 :(得分:2)

我正在做的事情就像,

JSONObject jsonObject = new JSONObject();
jsonObject.put("email", "abc@xyz.com");
jsonObject.put("uname", "test");
jsonObject.put("upwd", "test123");

JSONArray jArrayParam = new JSONArray();
jArrayParam.put(jsonObject);

List<NameValuePair> nameValuePair = new ArrayList<NameValuePair>();
nameValuePair.add(new BasicNameValuePair("bulkdata",jArrayParam.toString()));

HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(url);
httppost.addHeader("Content-Type", "application/x-www-form-urlencoded");
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs, HTTP.UTF_8));

// Execute HTTP Post Request
HttpResponse response = httpclient.execute(httppost);

使用 bulkdata ,您可以在服务器端获取这些值..