Wie kann ich ein JSON-Objekt über Request mit Android senden?

Ich möchte den folgenden JSON Text {"Email":"aaa@tbbb.com","Password":"123456"} an einen Web-Service senden und die Antwort lesen. Ich weiß, wie man JSON liest. Das Problem ist, dass das obige JSON Objekt in einem Variablennamen jason gesendet werden jason .

Wie kann ich das von Android machen? Was sind die Schritte wie das Anlegen von Anforderungsobjekt, das Einstellen von Inhalts-Headern usw.

  • Android Wie man LinkedHashMap zwischen Aktivitäten passieren?
  • Texteingabe in SearchView wird nicht angezeigt
  • Getoutputmediafileuri-Methode ist nicht zugänglich?
  • Erkennung von Touch / Tap-Ereignissen innerhalb eines Viewpagers
  • Wie wird die Standortgenauigkeit in Android gemessen?
  • Android: layout_gravity funktioniert nicht wie erwartet
  • NotifyDataSetChange funktioniert nicht vom benutzerdefinierten Adapter
  • Greendao: Weg, um Fragen zu debuggen?
  • Speichern von Byte-Array mit SharedPreferences
  • Android: Stellen Sie die Farbe CheckBox ein
  • Skalierung einer Phonegap App für verschiedene Android Bildschirmgrößen / Dichten?
  • So drucken Sie PDF mit Android 4.4 Druckgerüst
  • 8 Solutions collect form web for “Wie kann ich ein JSON-Objekt über Request mit Android senden?”

    Android hat keinen speziellen Code für das Senden und Empfangen von HTTP, können Sie Standard-Java-Code verwenden. Ich würde empfehlen, den Apache HTTP Client zu verwenden, der mit Android kommt. Hier ist ein Code-Snippet, mit dem ich einen HTTP-POST gesendet habe.

    Ich verstehe nicht, was das Objekt in eine Variable namens "Jason" zu schicken hat mit etwas zu tun. Wenn Sie nicht sicher sind, was genau der Server will, erwägen Sie, ein Testprogramm zu schreiben, um verschiedene Strings an den Server zu senden, bis Sie wissen, welches Format es sein muss.

     int TIMEOUT_MILLISEC = 10000; // = 10 seconds String postMessage="{}"; //HERE_YOUR_POST_STRING. HttpParams httpParams = new BasicHttpParams(); HttpConnectionParams.setConnectionTimeout(httpParams, TIMEOUT_MILLISEC); HttpConnectionParams.setSoTimeout(httpParams, TIMEOUT_MILLISEC); HttpClient client = new DefaultHttpClient(httpParams); HttpPost request = new HttpPost(serverUrl); request.setEntity(new ByteArrayEntity( postMessage.toString().getBytes("UTF8"))); HttpResponse response = client.execute(request); 

    Das Senden eines Json-Objekts aus Android ist einfach, wenn Sie Apache HTTP Client verwenden. Hier ist ein Codebeispiel, wie man es macht. Sie sollten einen neuen Thread für Netzwerkaktivitäten erstellen, um den UI-Thread nicht zu sperren.

      protected void sendJson(final String email, final String pwd) { Thread t = new Thread() { public void run() { Looper.prepare(); //For Preparing Message Pool for the child Thread HttpClient client = new DefaultHttpClient(); HttpConnectionParams.setConnectionTimeout(client.getParams(), 10000); //Timeout Limit HttpResponse response; JSONObject json = new JSONObject(); try { HttpPost post = new HttpPost(URL); json.put("email", email); json.put("password", pwd); StringEntity se = new StringEntity( json.toString()); se.setContentType(new BasicHeader(HTTP.CONTENT_TYPE, "application/json")); post.setEntity(se); response = client.execute(post); /*Checking response */ if(response!=null){ InputStream in = response.getEntity().getContent(); //Get the data in the entity } } catch(Exception e) { e.printStackTrace(); createDialog("Error", "Cannot Estabilish Connection"); } Looper.loop(); //Loop in the message queue } }; t.start(); } 

    Sie können auch Google Gson verwenden , um JSON zu senden und abzurufen.

     public void postData(String url,JSONObject obj) { // Create a new HttpClient and Post Header HttpParams myParams = new BasicHttpParams(); HttpConnectionParams.setConnectionTimeout(myParams, 10000); HttpConnectionParams.setSoTimeout(myParams, 10000); HttpClient httpclient = new DefaultHttpClient(myParams ); String json=obj.toString(); try { HttpPost httppost = new HttpPost(url.toString()); httppost.setHeader("Content-type", "application/json"); StringEntity se = new StringEntity(obj.toString()); se.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE, "application/json")); httppost.setEntity(se); HttpResponse response = httpclient.execute(httppost); String temp = EntityUtils.toString(response.getEntity()); Log.i("tag", temp); } catch (ClientProtocolException e) { } catch (IOException e) { } } 

    HttpPost wird von Android Api Level 22 veraltet. So verwenden Sie HttpUrlConnection für weiter.

     public static String makeRequest(String uri, String json) { HttpURLConnection urlConnection; String url; String data = json; String result = null; try { //Connect urlConnection = (HttpURLConnection) ((new URL(uri).openConnection())); urlConnection.setDoOutput(true); urlConnection.setRequestProperty("Content-Type", "application/json"); urlConnection.setRequestProperty("Accept", "application/json"); urlConnection.setRequestMethod("POST"); urlConnection.connect(); //Write OutputStream outputStream = urlConnection.getOutputStream(); BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(outputStream, "UTF-8")); writer.write(data); writer.close(); outputStream.close(); //Read BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream(), "UTF-8")); String line = null; StringBuilder sb = new StringBuilder(); while ((line = bufferedReader.readLine()) != null) { sb.append(line); } bufferedReader.close(); result = sb.toString(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return result; } 

    Es gibt eine überraschend schöne Bibliothek für Android HTTP verfügbar unter dem Link unten:

    http://loopj.com/android-async-http/

    Einfache Anfragen sind ganz einfach:

     AsyncHttpClient client = new AsyncHttpClient(); client.get("http://www.google.com", new AsyncHttpResponseHandler() { @Override public void onSuccess(String response) { System.out.println(response); } }); 

    Um JSON zu senden (Gutschrift zu `voidberg 'unter https://github.com/loopj/android-async-http/issues/125 ):

     // params is a JSONObject StringEntity se = null; try { se = new StringEntity(params.toString()); } catch (UnsupportedEncodingException e) { // handle exceptions properly! } se.setContentType(new BasicHeader(HTTP.CONTENT_TYPE, "application/json")); client.post(null, "www.example.com/objects", se, "application/json", responseHandler); 

    Es ist alles asynchron, funktioniert gut mit Android und sicher zu rufen von Ihrem UI-Thread. Die AntwortHandler wird auf demselben Thread laufen, den du es erstellt hast (normalerweise dein UI-Thread). Es hat sogar einen eingebauten resonseHandler für JSON, aber ich ziehe es vor, google gson zu benutzen.

    Jetzt, da der HttpClient abgelehnt wird, muss der aktuelle HttpUrlConnection die HttpUrlConnection , um die Verbindung zu erstellen und zu schreiben und aus der Verbindung zu lesen. Aber ich habe es vorgezogen, die Volley zu benutzen. Diese Bibliothek ist von Android AOSP. Ich fand sehr einfach zu verwenden, um JsonObjectRequest oder JsonArrayRequest zu machen

    Nichts könnte einfach sein Verwenden Sie OkHttpLibrary

    Erstellen Sie Ihre json

     JSONObject requestObject = new JSONObject(); requestObject.put("Email", email); requestObject.put("Password", password); 

    Und sende es so.

     OkHttpClient client = new OkHttpClient(); RequestBody body = RequestBody.create(JSON, json); Request request = new Request.Builder() .addHeader("Content-Type","application/json") .url(url) .post(requestObject.toString()) .build(); okhttp3.Response response = client.newCall(request).execute(); 
     public class getUserProfile extends AsyncTask<Void, String, JSONArray> { JSONArray array; @Override protected JSONArray doInBackground(Void... params) { try { commonurl cu = new commonurl(); String u = cu.geturl("tempshowusermain.php"); URL url =new URL(u); // URL url = new URL("http://192.168.225.35/jabber/tempshowusermain.php"); HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection(); httpURLConnection.setRequestMethod("POST"); httpURLConnection.setRequestProperty("Content-Type", "application/json"); httpURLConnection.setRequestProperty("Accept", "application/json"); httpURLConnection.setDoOutput(true); httpURLConnection.setRequestProperty("Connection", "Keep-Alive"); httpURLConnection.setDoInput(true); httpURLConnection.connect(); JSONObject jsonObject=new JSONObject(); jsonObject.put("lid",lid); DataOutputStream outputStream = new DataOutputStream(httpURLConnection.getOutputStream()); outputStream.write(jsonObject.toString().getBytes("UTF-8")); int code = httpURLConnection.getResponseCode(); if (code == 200) { BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(httpURLConnection.getInputStream())); StringBuffer stringBuffer = new StringBuffer(); String line; while ((line = bufferedReader.readLine()) != null) { stringBuffer.append(line); } object = new JSONObject(stringBuffer.toString()); // array = new JSONArray(stringBuffer.toString()); array = object.getJSONArray("response"); } } catch (Exception e) { e.printStackTrace(); } return array; } @Override protected void onPreExecute() { super.onPreExecute(); } @Override protected void onPostExecute(JSONArray array) { super.onPostExecute(array); try { for (int x = 0; x < array.length(); x++) { object = array.getJSONObject(x); ComonUserView commUserView=new ComonUserView();// commonclass.setId(Integer.parseInt(jsonObject2.getString("pid").toString())); //pidArray.add(jsonObject2.getString("pid").toString()); commUserView.setLid(object.get("lid").toString()); commUserView.setUname(object.get("uname").toString()); commUserView.setAboutme(object.get("aboutme").toString()); commUserView.setHeight(object.get("height").toString()); commUserView.setAge(object.get("age").toString()); commUserView.setWeight(object.get("weight").toString()); commUserView.setBodytype(object.get("bodytype").toString()); commUserView.setRelationshipstatus(object.get("relationshipstatus").toString()); commUserView.setImagepath(object.get("imagepath").toString()); commUserView.setDistance(object.get("distance").toString()); commUserView.setLookingfor(object.get("lookingfor").toString()); commUserView.setStatus(object.get("status").toString()); cm.add(commUserView); } custuserprof = new customadapterformainprofile(getActivity(),cm,Tab3.this); gridusername.setAdapter(custuserprof); // listusername.setAdapter(custuserprof); } catch (Exception e) { e.printStackTrace(); } } 
    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.