2011-12-15 129 views
8

我必须在以下URL数据发送到web服务如何使用JSON将数据发布到Web服务?

要被发送的数据的格式是:

new_member=[{"email":"[email protected]","username":"himanshu01","pwd":"himanshu01"}] 

其中emailusernamepwd是关键,并且具有相应的值的字符串通过的EditText取出串。我点击按钮发布这些数据。

我没有得到任何回应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一个新手和Android.Thanx解析。

回答

10

这里是例子

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/

+0

Thanx的答复,请告诉我我是如何通过new_member =因为我追加在网址,但实际提供的网址是http://www.fourerr.com/ws/signup我应该把新会员作为JSON目的。??请帮助我.. – 2011-12-15 12:52:25

2

块括号表示一个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放入实体中。

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

+0

Thanx的回复请告诉我我是如何通过new_member =因为我在追加url但实际提供的网址是http://www.fourerr.com/ws/signup我应该把newmember当成json对象吗?请帮助我.. – 2011-12-15 12:51:56

1

首先,您需要将codeonClick()方法内的StringsEditTexts中取出。

那么它看起来像服务器需要一个JSONArray只有一个项目,所以你需要创建一个JSONArray,是这样的:

JSONArray jsonArray=new JSONArray(); 
jsonArray.put(json); //your current json 
StringEntity entity=new StringEntity("new_member="+jsonArray); 
4
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(3); 

nameValuePairs.add(new BasicNameValuePair("email", "[email protected]")); 
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权限

相关问题