2016-03-22 3 views
0

Я использую HttpPost для отправки данных на внутренний сервер, и он хорошо работает с этим ниже код:Сообщение JSONObject использовать Volley

 public void postData() { 

     String url = Configs.URL_OWS; 
     String odmName = Configs.ODM; 
     String keymd5 = getKeyMD5(); 

     JSONObject jsonObject = new JSONObject(); 
     jsonObject.put("model", model); 
     jsonObject.put("imei", imei1); 
     jsonObject.put("imei2", imei2); 
     jsonObject.put("build", buildVersion); 

     if (CommonUtils.isNetworkConnected(mContext)) { 
      // Create a new HttpClient and Post Header 
      Handler handler = new Handler(Looper.getMainLooper()); 

      HttpParams myParams = new BasicHttpParams(); 
      HttpConnectionParams.setConnectionTimeout(myParams, Configs.TIME_OUT); 
      HttpConnectionParams.setSoTimeout(myParams, Configs.TIME_OUT); 
      HttpClient httpclient = new DefaultHttpClient(myParams); 

      try { 
       HttpPost httppost = new HttpPost(url); 
       httppost.setHeader("Accept", "application/json"); 
       httppost.setHeader("Content-type", "application/json"); 
       httppost.addHeader("Authorization", odmName + ":" + keymd5); 
       // httppost.addHeader("POST", "/api/ows HTTP/1.1"); 

       StringEntity se = new StringEntity(jsonObject.toString()); 
       se.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE, 
         "application/json")); 

       httppost.setEntity(se); 
       HttpResponse response = httpclient.execute(httppost); 
       String result = EntityUtils.toString(response.getEntity()); 
       JSONObject jsonResponse = new JSONObject(result); 
       String status = jsonResponse.optString("status"); 

       if (status.equals(Configs.RESPONSE_OK)) { // response 200, send successfull 
        Log.i(Configs.APP_NAME + " " + TAG, "Send data successful"); 

       } else { 
        Log.i(Configs.APP_NAME + " " + TAG, "Send data failed:"); 
       } 
      } catch (final ClientProtocolException e) { 
       Log.i(Configs.APP_NAME + " " + TAG, "ClientProtocolException " + e.getMessage()); 
      } catch (final IOException e) { 
       Log.i(Configs.APP_NAME + " " + TAG, "IOException " + e.getMessage()); 
      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 
     } else { 
      Log.i(Configs.APP_NAME + " " + TAG, "Network not connected "); 
     } 
    } 

я переключился использовать Volley вместо HttpPost но сервер всегда возвращает ошибку, код для метода Volley:

public void postDataByVolley() { 

     String url = Configs.URL_OWS; 
     String odmName = Configs.ODM; 
     final String keymd5 = getKeyMD5(); 

     HashMap<String, String> params = new HashMap<String, String>(); 
     params.put("model", model); 
     params.put("imei", imei1); 
     params.put("imei2", imei2); 
     params.put("build", buildVersion); 


     if (CommonUtils.isNetworkConnected(mContext)) { 


      JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(
        Request.Method.POST, 
        url, 
        new JSONObject(params), 

        new Response.Listener<JSONObject>() { 
         @Override 
         public void onResponse(JSONObject response) { 
          Log.i(Configs.APP_NAME + " " + TAG, "Success "); 
         } 
        }, 
        new Response.ErrorListener() { 
         @Override 
         public void onErrorResponse(VolleyError error) { 
          Log.i(Configs.APP_NAME + " " + TAG, "Error: " + error.toString()); 

         } 
        }) { 

       @Override 
       public Map<String, String> getHeaders() throws AuthFailureError { 
        HashMap<String, String> headers = new HashMap<String, String>(); 
        headers.put("Accept", "application/json"); 
        headers.put("Content-type", "application/json"); 
        headers.put("Authorization", odmName + ":" + keymd5); 
        return headers; 
       } 
      }; 


      jsonObjectRequest.setRetryPolicy(new DefaultRetryPolicy(Configs.TIME_OUT, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT)); 

      RequestQueue requestQueue = Volley.newRequestQueue(mContext); 
      requestQueue.add(jsonObjectRequest); 
     } 
    } 

Я не могу найти, где я был не прав, с кодом метода Volley. Есть ли проблема в моем методе Volley?

+0

Сообщите свой журнал ошибок Если есть. – JUL2791

+0

@I_Droid: Log: BasicNetwork.performRequest: Неожиданный код ответа 400 – CauCuKien

+0

400 означает «плохой запрос». Проверьте правильность запроса с заголовками и параметрами – JUL2791

ответ

0

Трудно сказать, почему вы столкнулись ошибки .please проверить, что URL-адрес и параметры передаются правильно .once вы получите сообщение об ошибке затем вставьте журнал ошибок здесь Проверьте следующую ссылку, чтобы лучше понять его

http://www.androidhive.info/2014/05/android-working-with-volley-library-1/

+0

Ответ сервера: BasicNetwork.performRequest: Неожиданный код ответа 400. – CauCuKien

+0

Просто удалите тип контента json из своего заголовка здесь и проверьте, работает ли он .400 обычно означает, что API-интерфейс сервера не получает то, что именно он ожидает – VarunJoshi129

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