2017-02-22 87 views
1

IM试图发送一个JSON对象,看起来像这样我的服务器{“名”:乔}, ,目前我的代码看起来是这样的。然而,我在我的服务器上得到的json看起来像这样{'{“name”:joe}':''}。所以我的问题是我如何发送json,所以当我在我的服务器上收到它时,它看起来像{'name':joe}?我的服务器正在使用nodejs。我想通过request.body.name来获取该名称。任何帮助,将理解从Android的发送JSON对象HttpURLConnection的POST请求

protected Boolean doInBackground(Void... params) { 
     try { 
      URL url = new URL("http://10.0.2.2:3000/users/user"); 
      HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
      conn.setDoOutput(true); 
      conn.setRequestMethod("POST"); 
      conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8"); 
      String jsonString = "{\"name\":" + this.mName + "}"; 
      OutputStream os = conn.getOutputStream(); 
      os.write(jsonString.getBytes()); 
      os.flush(); 



      BufferedReader br = new BufferedReader(new InputStreamReader(
        (conn.getInputStream()))); 

      String output; 
      StringBuilder response = new StringBuilder(); 
      while ((output = br.readLine()) != null) { 
       response.append(output); 
       response.append('\r'); 
      } 
      mes = response.toString(); 
      conn.disconnect(); 

      if (mes!=null && !mes.isEmpty()){ 
       return true; 
      }else { 
       return false; 
      } 

     }catch (Exception e) { 
      e.printStackTrace(); 

     } 
     return false; 
    } 

编辑:改变应用/后的X WWW窗体-urlencoded为application/JSON。我不断收到FileNorFoundException,和服务器返回响应代码400

+0

字符串jsonString = “{\” 名称\ “:” + this.mName +“}”;尝试用一些字符串jsonString =改变这种“‘名\’” + this.mName“ –

回答

0

SanuoXeu改变你这行代码,将工作

conn.setRequestProperty("Content-Type", "application/json; charset=utf-8"); 
+0

不断变化的应用/ JSON到应用程序/ x-WWW窗体-urlencoded我不断收到FileNotFoundException异常时。 – SanuoXeu

0

试试这个:

protected Boolean doInBackground(Void... params) { 
      try { 
       URL url = new URL("http://10.0.2.2:3000/users/user"); 
       HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
       conn.setDoOutput(true); 
       conn.setRequestMethod("POST"); 
       conn.setRequestProperty("Content-Type", "application/json; charset=utf-8");  

       DataOutputStream os = new DataOutputStream(conn.getOutputStream()); 

       JSONObject jsonParam = new JSONObject(); 
       jsonParam.put("name",this.mName); 
       os.write(jsonParam.getBytes()); 
       os.flush(); 

       BufferedReader br = new BufferedReader(new InputStreamReader(
         (conn.getInputStream()))); 

       String output; 
       StringBuilder response = new StringBuilder(); 
       while ((output = br.readLine()) != null) { 
        response.append(output); 
        response.append('\r'); 
       } 
       mes = response.toString(); 
       conn.disconnect(); 

       if (mes!=null && !mes.isEmpty()){ 
        return true; 
       }else { 
        return false; 
       } 

      }catch (Exception e) { 
       e.printStackTrace(); 

      } 
      return false; 
     } 
0

希望你做得很好。

它会很难,如果你愿意通过连接字符串来发送数据作为JSON。

private String makeJson(String name) { 

     JSONObject json = new JSONObject(); 
     try { 
      json.put("name", name); 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 

     return json.toString(); 
    } 

然后改变这一行:

conn.setRequestProperty("Content-Type", "application/json; charset=utf-8"); 
0

可能,这将有助于....

protected Boolean doInBackground(Void... params) { 
     try { 
      URL url = new URL("http://10.0.2.2:3000/users/user"); 
      HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
      conn.setDoOutput(true); 
      conn.setDoInput(true); 
      conn.setUseCaches(false); 
      conn.setRequestMethod("POST"); 
      conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8"); 

     /***************** add this code **********************/ 
      JSONObject ap = new JSONObject(); 
      ap.put("name","Joe"); 

      OutputStreamWriter ap_osw= new OutputStreamWriter(conn.getOutputStream()); 
      ap_osw.write(ap.toString()); 
      ap_osw.flush(); 
      ap_osw.close(); 

      BufferedReader br = new BufferedReader(new InputStreamReader(
        (conn.getInputStream()))); 

      String output; 
      StringBuilder response = new StringBuilder(); 
      while ((output = br.readLine()) != null) { 
       response.append(output); 
       response.append('\r'); 
      } 
      mes = response.toString(); 
      conn.disconnect(); 

      if (mes!=null && !mes.isEmpty()){ 
       return true; 
      }else { 
       return false; 
      } 

     }catch (Exception e) { 
      e.printStackTrace(); 

     } 
     return false; 
    } 
相关问题