2013-10-08 3 views
1

Я очень новичок в android и пытаюсь использовать .net weservice, отправив объект json.отправка json объекта в webservice в android

Я создаю объект JSON и добавить все параметры к нему как

JSONObject json = new JSONObject(); 

    json.put("name","koli"); 
    json.put("email","[email protected]"); 

И, подозвав запрос в методе doInBackground класса AsyncTask

String response = HttpClient.SendHttpPost(params[0],json); 

Это как я пытаюсь сделать запрос

public static String SendHttpPost(String URL, JSONObject jsonData) { 

     Log.d("jsonData", ""+jsonData); 
     StringBuilder stringBuilder = new StringBuilder(); 
     DefaultHttpClient client = new DefaultHttpClient(); 
     HttpPost httpPostRequest = new HttpPost(URL); 
     httpPostRequest.setHeader("User-Agent", "com.altaver.android_PostJson2"); 
     httpPostRequest.setHeader("Accept", "application/json"); 
     httpPostRequest.setHeader("Content-Type", "application/json"); 
     StringEntity se = null; 
     try { 
      se = new StringEntity(jsonData.toString(),"UTF-8"); 

      se.setContentType("application/json"); 
     } catch (UnsupportedEncodingException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     httpPostRequest.setEntity(se); 
     HttpResponse response = null; 
     try { 
      response = client.execute(httpPostRequest); 
     } catch (ClientProtocolException e) { 
      // TODO Auto-generated catch block 

      e.printStackTrace(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

В вышеуказанном методе что делает

StringEntity se = null; 
      try { 
       se = new StringEntity(jsonData.toString(),"UTF-8"); 

       se.setContentType("application/json"); 
      } catch (UnsupportedEncodingException e) { 

этот сниппет сделаю.

и почему я не могу отправить свой jsonobject?

Спасибо :)

+0

Код правильно, то, что проблема? – shem

+0

@shem JSON Объект, который я отправляю от android, равен NULL со стороны службы – user2386771

+0

Действительно ли jsonData выглядит нормально, когда вы печатаете его в журнале? – shem

ответ

2

Попробуйте это .. в вашем doInBackground

JSONObject jObjOut = null; 

       try { 
        HttpPost request = new HttpPost(url); 
        JSONObject returnedJObject; 
        returnedJObject = new JSONObject(JSONdata.toString()); 
        JSONStringer json = new JSONStringer(); 
        StringBuilder sb=new StringBuilder(); 


        if (returnedJObject!=null) 
        { 
         Iterator<String> itKeys = returnedJObject.keys(); 
         if(itKeys.hasNext()) 
          json.object(); 
         while (itKeys.hasNext()) 
         { 
          String k=itKeys.next(); 
          json.key(k).value(returnedJObject.get(k)); 
          //Log.e("keys "+k,"value "+returnedJObject.get(k).toString()); 
         }    
        } 
        json.endObject(); 


        StringEntity entity; 

        entity = new StringEntity(json.toString()); 

        entity.setContentType("application/json;charset=UTF-8"); 
        // entity.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE,"application/json;charset=UTF-8")); 
        request.setHeader("Accept", "application/json"); 
        request.setEntity(entity); 

        HttpResponse response =null; 
        DefaultHttpClient httpClient = new DefaultHttpClient(); 

        HttpConnectionParams.setSoTimeout(httpClient.getParams(), 30000); 
        HttpConnectionParams.setConnectionTimeout(httpClient.getParams(),50000); 

        response = httpClient.execute(request); 

        InputStream in; 
        in = response.getEntity().getContent(); 

        BufferedReader reader = new BufferedReader(new InputStreamReader(in)); 
        String line = null; 
        while((line = reader.readLine()) != null){ 
         sb.append(line); 
        } 


        return new JSONObject(sb.toString()); 
1

попытка chaging:

se = new StringEntity(jsonData.toString(),"UTF-8"); 

к этому:

se = new StringEntity(jsonData.toString()); 
Смежные вопросы