2017-02-22 6 views
1

Ich versuche, ein JSON-Objekt, das so aussieht, an meinen Server {'name': joe}, und derzeit sieht mein Code so aus. Wie auch immer der json auf meinem Server aussieht, sehe so aus {'{"name": joe}': ''}. also meine Frage ist, wie schicke ich die JSON, so würde es aussehen wie {'Name': Joe}, wenn ich es auf meinem Server erhalte? Mein Server benutzt nodejs. Ich möchte diesen Namen von request.body.name bekommen. jede mögliche Hilfe würdeSenden von JSON-Objekt von Android nach HttpURLConnection POST-Anfrage

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; 
    } 

EDIT geschätzt werden: nach application/x-www-form-urlencoded auf application/json ändern. i halten FileNorFoundException bekommen, und Server liefert Antwortcode 400

+0

String jsonString = "{\" name \ sein kann ":" + this.mName + "}"; versuche das mit etwas zu ändern String jsonString = "'name \':" + this.mName "; –

Antwort

0

SanuoXeu diese Zeile im Code ändern wird es funktionieren

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

wenn ich application/json in application/x-www-form-urlencoded ändere, bekomme ich FileNotFoundException – SanuoXeu

0

Try this:

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

Hoffnung, die Sie gut tun.

Es wird schwer, wenn Sie bereit sind, Ihre Daten als JSON durch Verketten von Strings zu senden.

private String makeJson(String name) { 

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

     return json.toString(); 
    } 

Dann diese Zeile ändern:

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

dies wird dazu beitragen ....

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; 
    } 
Verwandte Themen