2013-03-20 4 views
0

Я новичок в android. Я изучаю HTTP-запрос для получения, публикации, удаления. из этого я узнал, как получить и удалить, а также отправить запрос. Но проблема заключается в отправке массива в почтовом запросе.как сделать запрос httppost

Это моя структура данных после ..

{ 
"customerId": "CUST01", 
"orderId": "101010", 
"orderTotal": 99.99, 
"orderDetailList": [ 
    { 
    "lineId": "1", 
    "itemNumber": "ABC", 
    "quantity": 9, 
    "price": 10.0 
    }, 
    { 
    "lineId": "2", 
    "itemNumber": "XYZ", 
    "quantity": 1, 
    "price": 9.99 
    } 
] 
} 

как отправить массив в пост?

ответ

0

Я предполагаю, что ваша структура запроса - это JSONObject с приведенными выше данными примера.

Теперь Просто создайте JSONObject с помощью класса JSONObject, здесь вы можете пройти через одну из моей презентации для Web API & Its Integration in Android.

Пример:

JSONObject myJSONRequest = new JSONObject(); 
    myJSONRequest.put("customerId", "CUST01"); 
    myJSONRequest.put("orderId","101010"); 
    ......... 
    ......... 
    JSONArray arrayOrder = new JSONArray(); 
    for(int i=cntLine; i<n; i++) 
    { 
     JSONObject objSub = new JSONObject(); 
     objSub .put("lineId", String.valueOf(i)); 
     objSub .put("itemNumber", String.valueOf(i)); 
     ............. 
     ............. 

     arrayOrder.put(objSub); 
    } 
    myJSONRequest.put("orderDetailList", arrayOrder.toString()); 



    // create complete request object by placing all the values inside it. 


    // Below code is for posting request data to web api 

    DefaultHttpClient client = new DefaultHttpClient(); 
    HttpPost post = new HttpPost(url); 
    post.setEntity(new StringEntity(myJSONRequest.toString(), "utf-8")); 
    HttpResponse response = client.execute(post); 
+0

я палочка использовать jsonobject.put или jsonarray.put – user2071490

+0

и массив "orderDetailList": [ { "lineId": "1", "ItemNumber": "ABC", "количество": 9, " цена ": 10.0 }, { "lineId": "2", "ItemNumber": "XYZ", "количество": 1, "цена": 9,99 } ] – user2071490

+0

Пожалуйста, вы можете объяснить мне, как я могу построить массив в этом формате? . "orderDetailList": [ { "lineId": "1", "ItemNumber": "АВС", "количество": 9, "Цена": 10,0 }, { "lineId": " 2" , "ItemNumber": "XYZ", "количество": 1, "цена": 9,99 } ] В этом случае, как я могу создать массив? – user2071490

0

Здесь я разместил некоторый код как получить контент с URL-адреса.

Теперь вам нужно передать String in Array.

try{ 


      HttpClient httpclient = getNewHttpClient(); 

      HttpGet httpget = new HttpGet("url"); 


      HttpResponse response = httpclient.execute(httpget); 
      HttpEntity entity = response.getEntity(); 
      is = entity.getContent(); 

     }catch(Exception e){ 
      Log.e("log_tag", "Error in http connection "+e.toString()); 
     } 

     //convert response to string 
     try{ 
      BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8); 
      StringBuilder sb = new StringBuilder(); 
      String line = null; 
      while ((line = reader.readLine()) != null) { 
       sb.append(line + "\n"); 
      } 
      is.close(); 
      result=sb.toString(); 
     }catch(Exception e){ 
      Log.e("log_tag", "Error converting result "+e.toString()); 
     } 
+1

'HttpGet httppost'? Плохое соглашение об именах, плюс OP хочет 'POST' некоторые данные, а не' GET'. – SudoRahul

+0

OP хочет опубликовать данные, и здесь вы разместили ответ для получения данных. –

+0

Это метод получения, который я использовал. – user2071490

1

Здесь я отправляю код, чтобы отправить значение сервер ..

 public void postData() { 
     // Create a new HttpClient and Post Header 
     HttpClient httpclient = new DefaultHttpClient(); 
    HttpPost httppost = new HttpPost("http://www.yoursite.com/script.php"); 

     try { 
// Add your data 
//you can add all the parameters your php needs in the BasicNameValuePair. 
//The first parameter refers to the name in the php field for example 
// $id=$_POST['customerId']; the second parameter is the value. 
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2); 
nameValuePairs.add(new BasicNameValuePair("customerId", "CUST01")); 
nameValuePairs.add(new BasicNameValuePair("orderId", "101010")); 
    nameValuePairs.add(new BasicNameValuePair("orderTotal", "99.99")); 
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 

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

     } catch (ClientProtocolException e) { 
    // TODO Auto-generated catch block 
     } catch (IOException e) { 
     // TODO Auto-generated catch block 
    }} 
+0

NameValuePair ?? –

+0

jsonobject.put нет NameValuePair, который я знаю – user2071490

+0

Посмотрите эту ссылку также http://www.vogella.com/articles/ApacheHttpClient/article.html – user1835052

0

В андроиде ее рекомендуемое что разработчик использует HttpURLConnection ...

И вам нужен вышеупомянутый json как строка.

Шаг 1) Создайте новый объект URL.

URL url = new URL("www.url.com/demoservice"); 

Шаг 2) Создайте объект HttpURLConnection.

HttpUrlConnection connection = url.openConnection(); 

Шаг 3) Установите свойство запроса на HttpPost ..

connection.setRequestProperty("request-Method","POST"); 
connection.setRequestProperty("content-type","application/json"); 

Шаг 4) Получить ссылку выходного потока.

OutputStream stream = connection.getOutputStream(); 

Шаг 5) Введите строку json в выходной поток.

stream.write(jsonString.toBytes()); 

Этап 6) Закрыть поток.

stream.close(); 

Надеется, что это будет полезно ..

Смежные вопросы