如何使用JSON发布数据到Web服务?

我必须将以下数据发送到URl的webservice

要发送的数据格式是:

new_member=[{"email":"himanshu@avigma.com","username":"himanshu01","pwd":"himanshu01"}] 

其中emailusernamepwd是关键字,并通过edittextstring获取相应的值string。 我点击button发布这个数据。

我没有得到任何回应bcoz我试图反对检查这与我的合作开发商在他的iPhone相同的应用程序iPhone版本的用户名和密码无效是由服务器说。

我的Signup.java类是:

  Button b1=(Button)findViewById(R.id.button1); b1.setOnClickListener(new OnClickListener() { EditText e=(EditText)findViewById(R.id.editText1); String a=e.getText().toString(); EditText e1=(EditText)findViewById(R.id.editText1); String b=e1.getText().toString(); EditText e2=(EditText)findViewById(R.id.editText1); String c=e2.getText().toString(); public void onClick(View v) { // TODO Auto-generated method stub HttpClient client = new DefaultHttpClient(); HttpConnectionParams.setConnectionTimeout(client.getParams(), 10000); //Timeout Limit HttpResponse response; JSONObject json = new JSONObject(); try{ HttpPost post = new HttpPost("URL"); //System.out.println(post); json.put("email", a); json.put("username", b); json.put("pwd",c); StringEntity se = new StringEntity( "JSON: " + json.toString()); se.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE, "application/json")); post.setEntity(se); response = client.execute(post); /*Checking response */ if(response!=null){ InputStream in = response.getEntity().getContent(); //Get the data in the entity //System.out.println(response); } } catch(Exception e){ e.printStackTrace(); System.out.println(e.toString()); //createDialog("Error", "Cannot Estabilish Connection"); } } } ); 

请帮助我,我是JSON的新手和parsing在Android.Thanx。

Solutions Collecting From Web of "如何使用JSON发布数据到Web服务?"

这里是例子

 HttpClient httpClient = new DefaultHttpClient(); HttpPost httpPost = new HttpPost( "https://api.dailymile.com/entries.json?oauth_token=" + token); httpPost.setHeader("content-type", "application/json"); JSONObject data = new JSONObject(); data.put("message", dailyMilePost.getMessage()); JSONObject workoutData = new JSONObject(); data.put("workout", workoutData); workoutData.put("activity_type", dailyMilePost.getActivityType()); workoutData.put("completed_at", dailyMilePost.getCompletedAt()); JSONObject distanceData = new JSONObject(); workoutData.put("distance", distanceData); distanceData.put("value", dailyMilePost.getDistanceValue()); distanceData.put("units", dailyMilePost.getDistanceUnits()); workoutData.put("duration", dailyMilePost.getDurationInSeconds()); workoutData.put("title", dailyMilePost.getTitle()); workoutData.put("felt", dailyMilePost.getFelt()); StringEntity entity = new StringEntity(data.toString(), HTTP.UTF_8); httpPost.setEntity(entity); HttpResponse response = httpClient.execute(httpPost); 

看到这个博客的完整信息http://simpleprogrammer.com/2011/06/04/oauth-and-rest-in-android-part-2/

 List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(3); nameValuePairs.add(new BasicNameValuePair("email", "himanshu@avigma.com")); nameValuePairs.add(new BasicNameValuePair("username", "himanshu01")); nameValuePairs.add(new BasicNameValuePair("pwd", "himanshu01")); // You have to add your parameters as nameValuePairs String res = ""; try { HttpClient httpclient = new DefaultHttpClient(); HttpPost httppost = new HttpPost("URL"); // Add your data httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); HttpResponse response = httpclient.execute(httppost); res = EntityUtils.toString(response.getEntity()); JSONTokener t = new JSONTokener(res); JSONArray a = new JSONArray(t); JSONObject o = a.getJSONObject(0); String sc = o.getString("success"); if(sc.equals("1")) { // posted successfully } else { // error occurred } } catch (Exception e) { e.printStackTrace(); } 

不要忘记指定android.permission.INTERNET权限

块括号表示一个JSON数组,所以你只需要把你的json对象包装在一个JSONArray中。

 JSONArray array = new JSONArray(); JSONObject json = new JSONObject(); json.put("email", a); json.put("username", b); json.put("pwd",c); array.put(json); 

array放到实体中。

重要提示:您不应该在主线程上执行长时间运行(例如networking)任务。 使用AsyncTask在后台正确执行长时间运行的任务,然后更新UI。

首先,你需要把onClick()方法中的EditTextsStringscode

然后它看起来像服务器只有一个项目的JSONArray ,所以你需要创build一个JSONArray,如下所示:

 JSONArray jsonArray=new JSONArray(); jsonArray.put(json); //your current json StringEntity entity=new StringEntity("new_member="+jsonArray);