2017-02-19 61 views
0

我想發佈一個JSON看起來像無法從POST JSON在HttpURLConnection的Android中

{ 
    "latLong":"50.1109,8.6821 - latLong", 
    "currencyCode":"EUR", 
    "locale":"en-GB", 
    "budget":"" 
} 

當我做這與郵差,我得到了我所需要的響應的響應。但在android studio中它不能編譯,而我得到一個返回的空字符串。 我的功能如下所示。

protected Void doInBackground(Void... params) { 

     URL url = null; 
     StringBuffer sb = new StringBuffer(); 

     try { 
      url = new URL("http://192.168.2.101:12345/services/test"); 
     } catch (MalformedURLException e) { 
      e.printStackTrace(); 
     } 
     HttpURLConnection con = null; 
     try { 
      con = (HttpURLConnection) url.openConnection(); 
      con.setRequestMethod("POST"); 
      con.setDoOutput(true); 
      con.setRequestProperty("Content-Type","application/json"); 
      DataOutputStream printout = new DataOutputStream(con.getOutputStream()); 

      String Json_String = "{\n" + 
        " \"latLong\":\"50.1109,8.6821 - latLong\",\n" + 
        " \"currencyCode\":\"EUR\",\n" + 
        " \"locale\":\"en-GB\",\n" + 
        " \"budget\":\"\"\n" + 
        "}"; 

      InputStream in = new BufferedInputStream(con.getInputStream()); 
      BufferedReader br = new BufferedReader(new InputStreamReader(in)); 
      String inputLine = ""; 
      while ((inputLine = br.readLine()) != null) { 
       sb.append(inputLine); 
      } 
      result = sb.toString(); 

      printout.flush(); 
      printout.close(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

     try { 
      responseMsg = con.getResponseMessage(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     try { 
      response = con.getResponseCode(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     return null; 
    } 
} 

回答

0

使用OutputStreamWriter代替DataOutputStream類和con.setDoOutput(true)應該來,然後再發布。

基本上:

con = (HttpURLConnection) url.openConnection(); 
    con.setDoOutput(true); 
    con.setRequestMethod("POST"); 

    OutputStreamWriter writer = new OutputStreamWriter(
      con.getOutputStream()); 
    String Json_String = "{\n" + 
      " \"latLong\":\"50.1109,8.6821 - latLong\",\n" + 
      " \"currencyCode\":\"EUR\",\n" + 
      " \"locale\":\"en-GB\",\n" + 
      " \"budget\":\"\"\n" + 
      "}"; 

    writer.write(Json_String); 
    writer.close(); 

    if (con.getResponseCode() == HttpURLConnection.HTTP_OK) { 
     // OK 
     InputStream in = new BufferedInputStream(con.getInputStream()); 
     BufferedReader br = new BufferedReader(new InputStreamReader(in)); 
     String inputLine = ""; 
     while ((inputLine = br.readLine()) != null) { 
      sb.append(inputLine); 
     } 
     string result = result = sb.toString();