2015-04-20 3 views
-1

Я отправляю следующий запрос JSON;Как отправить запрос JSON в Android

List<NameValuePair> params = new ArrayList<NameValuePair>(); 
     params.add(new BasicNameValuePair("email",username)); 
     params.add(new BasicNameValuePair("password",pass)); 
JSONObject json = jParser.makeHttpRequest(url_login, "POST", params); 

Он генерирует следующую строку email=xxx, password=xxxx, но я хочу строку сгенерированный быть в формате JSON (т.е. "email":"xxx","password":"xxxx"). Как я могу это сделать?

+0

Взгляните на Волейбол. Это облегчает жизнь. Вот небольшой учебник - http://www.androidhive.info/2014/09/android-json-parsing-using-volley/ – Varundroid

ответ

0

Вещь которую вы хотите использовать в своем коде его вызов опубликовать данные на сервер в raw-data format. Используйте свою работу ниже код:

public String POST(String url, JSONObject jsonObject) { 
    InputStream inputStream = null; 
    String result = ""; 
    try { 
     HttpClient httpclient = new DefaultHttpClient(); 
     HttpPost httpPost = new HttpPost(url); 
     String json = ""; 
     json = jsonObject.toString(); 
     StringEntity se = new StringEntity(json); 
     httpPost.setEntity(se); 
     httpPost.setHeader("Content-type", "application/json"); 
     HttpResponse httpResponse = httpclient.execute(httpPost); 
     inputStream = httpResponse.getEntity().getContent(); 
     if (inputStream != null) 
      result = convertInputStreamToString(inputStream); 
     else 
      result = "Did not work!"; 
    } catch (Exception e) { 
     Log.d("InputStream", e.getLocalizedMessage()); 
    } 

    return result; 
} 

private static String convertInputStreamToString(InputStream inputStream) throws IOException { 
    BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream)); 
    String line = ""; 
    String result = ""; 
    while ((line = bufferedReader.readLine()) != null) 
     result += line; 

    inputStream.close(); 
    return result; 

} 

Теперь, когда вы хотите использовать или отправлять данные на сервер вам нужно использовать что-то вроде этого:

JSONObject jsonObject = new JSONObject(); 
jsonObject.put("email",username)); 
jsonObject.put("password",pass); 

Теперь вам нужно вызвать этот метод с использованием

String request = POST(yourURL , jsonObject); 

Примечание: Хотя you'r с помощью этого raw-data format, то вы должны установить Content-Type - application/json на вашей back-end стороне, иначе это не сработает.

+0

Извините, что я новичок в андроид. Итак, как мне разобрать ответ? –

+0

Для синтаксического анализа вы просто проверяете, является ли ваш первый тег в ответ 'JSONObject' или нет. Если это тогда, это должно быть 'JSONObject jb = new JSONObject (request)', а первый тег - 'JSONArray', тогда он должен быть' JSONArray jArray = new JSONArray (запрос) 'Для получения дополнительной информации перейдите по этому адресу http: // www. androidhive.info/2012/01/android-json-parsing-tutorial/ – Piyush

0
public JSONArray executeService(String... params) throws Exception{ 
     HttpClient httpclient = new DefaultHttpClient(); 
     HttpPost httppost = new HttpPost(Constant.AdsDetail.URL); 

     List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); 
     nameValuePairs.add(new BasicNameValuePair(Constant.AdsDetail.PROJECT_ID, params[0])); 
     nameValuePairs.add(new BasicNameValuePair(Constant.AdsDetail.BROKER_ID,params[1])); 
     httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 

     HttpResponse response = httpclient.execute(httppost); 
     BufferedReader br = new BufferedReader(new InputStreamReader((response.getEntity().getContent()))); 
     String output; 
     StringBuilder responseJsonStr = new StringBuilder(); 

     while ((output = br.readLine()) != null) { 
      responseJsonStr.append(output); 
     } 

     String queryString = Utils.getQueryString(nameValuePairs); 
     System.out.println("Query String "+Constant.AdsDetail.URL +"&"+queryString); 
     //System.out.println("Response Json String "+responseJsonStr); 

     if(!StringUtils.startsWith(responseJsonStr.toString(), "[")) { 
      responseJsonStr.insert(0,"["); 
      responseJsonStr.append("]"); 
     } 
     return new JSONArray(responseJsonStr.toString()); 

    } 
1

Попробуйте использовать JSONObject

String json = null; 

    JSONObject jsonObject = new JSONObject(); 
    jsonObject.put("email",username)); 
    jsonObject.put("password",pass); 
    json = jsonObject.toString(); 

    HttpClient httpclient = new DefaultHttpClient(); 
    HttpPost httpPost = new HttpPost(strUrl); 
    StringEntity se = new StringEntity(json); 
    httpPost.setEntity(se); 
    httpPost.setHeader("Accept", "application/json"); 
    httpPost.setHeader("Content-type", "application/json"); 
    HttpResponse httpResponse = httpclient.execute(httpPost); 
    inputStream = httpResponse.getEntity().getContent(); 
    BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"), 8); 
    StringBuilder sb = new StringBuilder(); 

    String line = null; 
    while ((line = reader.readLine()) != null) 
    { 
     sb.append(line + "\n"); 
    } 
    result = sb.toString(); 
+0

Как я могу опубликовать этот JSONObject с помощью jParser –

+0

проверить обновленный ответ – PLP

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