2016-02-16 3 views
0

Я пытаюсь отправить POST JSON данные на сервер. Используя this page в качестве шаблона, так как он использует современные HttpURLConnection.Метод JAVA POST не отправляется на страницу

Хотя я пробовал несколько способов, это возвращает только HTML-сообщение фактической страницы. На самом деле он не отправляет данные JSON (переданные в виде строки методу) на страницу.

Я попытался с помощью моего JSON данных как JSONObject, однако DataOutputStream не нравится.

Я что-то не так?

HttpURLConnection conn; 
DataOutputStream wr; 
StringBuilder result; 
URL urlObj; 
JSONObject jObj = null; 

public JSONObject makeHttpRequest(String data) { 

    urlObj = new URL("MY URL HERE"); 

    conn = (HttpURLConnection) urlObj.openConnection(); 
    conn.setDoOutput(true); 
    conn.setRequestMethod("POST"); 
    conn.setRequestProperty("Accept-Charset", "UTF-8"); 
    conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); 
    conn.setRequestProperty("Accept", "application/json"); 
    conn.setRequestProperty("Content-Length", ""+data.length()); 
    conn.setReadTimeout(10000); 
    conn.setConnectTimeout(15000); 
    conn.connect(); 

    wr = new DataOutputStream(conn.getOutputStream()); 
    wr.writeBytes(data); 
    wr.flush(); 
    wr.close(); 


    //Receive the response from the server 
    InputStream in = new BufferedInputStream(conn.getInputStream()); 
    BufferedReader reader = new BufferedReader(new InputStreamReader(in)); 
    result = new StringBuilder(); 
    String line; 
    while ((line = reader.readLine()) != null) { 
     result.append(line); 
    } 

    conn.disconnect(); 
    jObj = new JSONObject(result.toString()); 
    return jObj; 
} 

ответ

0

попробуйте этот код. Он работает в моем приложении.

public JSONObject getResponse(String data) { 
    try { 
     StringBuilder builder = new StringBuilder(); 
     URL url = new URL(requestURL); 
     HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
     conn.setReadTimeout(15000); 
     conn.setConnectTimeout(15000); 
     conn.setRequestMethod("POST"); 
     conn.setDoInput(true); 
     conn.setDoOutput(true); 
     OutputStream os = conn.getOutputStream(); 
     BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(os, "UTF-8")); 
     writer.write(data); 
     writer.flush(); 
     writer.close(); 
     os.close(); 
     int responseCode=conn.getResponseCode(); 
     if (responseCode == HttpsURLConnection.HTTP_OK) { 
      String line; 
      BufferedReader br=new BufferedReader(new InputStreamReader(conn.getInputStream())); 
      while ((line=br.readLine()) != null) { 
       builder.append(line); 
      } 
     } else { 
      builder.append("{status: \"Unable to connect to server.\"}"); 
     } 
     Log.e("JSONService.java", builder.toString()); 
     JSONObject object = new JSONObject(builder.toString()); 
     return object; 
    } catch (Exception ex) { 
     Log.e("JSONService.java", Log.getStackTraceString(ex)); 
     try { 
      object.put(STATUS, "Exception " + ex.getMessage()); 
     } catch (Exception e) { 
      Log.e("JSONService.java", Log.getStackTraceString(ex)); 
     } 
    } 
    return null; 
} 
+0

Извините, что не работает. –

+0

Убедитесь, что ваше приложение имеет разрешения «ИНТЕРНЕТ» в файле манифеста и убедитесь, что URL-адрес верен. – ELITE