2011-12-15 29 views
8

tôi phải gửi dữ liệu sau đây để webservice tại URLLàm cách nào để đăng dữ liệu lên Webservice bằng JSON?

Định dạng của dữ liệu được gửi là:

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

nơi email, usernamepwd là chìa khóa và có chuỗi giá trị tương ứng lấy qua EditText chuỗi. Tôi đang đăng dữ liệu này bằng cách nhấp vào nút.

Tôi không nhận được bất kỳ phản hồi nào mà tôi đã cố gắng kiểm tra điều này với nhà phát triển đồng trong iphone của mình cùng phiên bản ứng dụng iphone vì tên người dùng và mật khẩu không hợp lệ được nói bởi máy chủ.

lớp Signup.java của tôi là:

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"); 
       } 
     } 

    } 
      ); 

hãy giúp tôi i am a newbie trong JSON và phân tích trong Android.Thanx.

Trả lời

10

đây là ví dụ

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); 

xem thông tin đầy đủ từ blog này http://simpleprogrammer.com/2011/06/04/oauth-and-rest-in-android-part-2/

+0

Thanx cho câu trả lời xin vui lòng cho tôi biết làm thế nào tôi vượt qua new_member = như tôi đang phụ thêm vào url nhưng url được cung cấp thực tế là http://www.fourerr.com/ws/signup Tôi có nên dùng newmember như json không vật.?? Hãy giúp tôi .. –

+0

giá trị mới này là bao nhiêu? cố gắng vượt qua như mã thông báo đã được thông qua trong ví dụ – Pratik

+2

Tôi sẽ khuyên bạn nên sử dụng không ** StringEntity entity = new StringEntity (data.toString()); ** nhưng ** StringEntity entity = new StringEntity (paramInput.toString(), HTTP.UTF_8); ** - Trong trường hợp của tôi, vấn đề này giải quyết được vấn đề với mã hóa các ký tự cyrillic trong chuỗi json. – Prizoff

2

Dấu ngoặc đơn biểu thị một mảng JSON, vì vậy bạn chỉ cần bọc đối tượng json của mình vào một JSONArray.

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

Đặt array vào thực thể.

Quan trọng: bạn không nên thực hiện các tác vụ dài hạn (ví dụ: mạng) trên chuỗi chính. Sử dụng AsyncTask để thực hiện đúng các tác vụ chạy trong nền và sau đó cập nhật giao diện người dùng.

+0

Thanx cho trả lời xin vui lòng cho tôi biết làm thế nào tôi vượt qua new_member = như tôi đang phụ thêm trong url nhưng url cung cấp thực tế là http://www.fourerr.com/ws/signup Tôi có nên dùng newmember làm đối tượng json không ?? Xin hãy giúp tôi .. –

1

Trước hết, bạn cần phải đặt số code nhận số Strings từ EditTexts bên trong phương thức onClick().

Sau đó, nó trông giống như máy chủ hy vọng một JSONArray chỉ với một mục, vì vậy bạn sẽ cần phải tạo ra một JSONArray, một cái gì đó như thế này:

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(); 
       } 

Dont quên để xác định android.permission.INTERNET phép

Các vấn đề liên quan