volley studio method android json post request

studio - request method android



¿Cómo enviar un objeto JSON sobre HttpClient Request con Android? (3)

Deseo enviar el texto JSON {} a un servicio web y leer la respuesta. ¿Cómo puedo hacer esto desde Android? ¿Cuáles son los pasos como crear objeto de solicitud, establecer encabezados de contenido, etc.

Mi código está aquí

public void postData(String result,JSONObject obj) { // Create a new HttpClient and Post Header HttpClient httpclient = new DefaultHttpClient(); HttpParams myParams = new BasicHttpParams(); HttpConnectionParams.setConnectionTimeout(myParams, 10000); HttpConnectionParams.setSoTimeout(myParams, 10000); String json=obj.toString(); try { HttpPost httppost = new HttpPost(result.toString()); 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) { } }

¿Qué error he hecho? Por favor, corrígeme porque me muestra un error de solicitud incorrecta, pero cuando lo publico en un póster, me muestra el estado como Successfull 200 ok


En el ciclo try catch, hice esto:

HttpPost post = new HttpPost( "https://www.placeyoururlhere.com"); post.setHeader(HTTP.CONTENT_TYPE,"application/json" ); List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1); nameValuePairs.add(new BasicNameValuePair("json", json)); post.setEntity(new UrlEncodedFormEntity(nameValuePairs)); HttpClient client = new DefaultHttpClient(); HttpResponse resp = client.execute(post); HttpEntity entity = resp.getEntity(); response = EntityUtils.toString(entity);

Puede agregar su nombreValurPairs según la cantidad de campos que tenga. Por lo general, el JSON puede llegar a ser realmente enorme, y luego sugeriré que gzip y luego envíe, pero si su JSON es bastante pequeño y siempre del mismo tamaño, lo anterior debería funcionar para usted.


Hago esto con

httppost.setHeader("Content-type", "application/json");

Además, el new HttpPost() toma la URL del servicio web como argumento.


Si se trata de un servicio web y no de una llamada RestAPI, puede obtener el archivo WSDL del servidor y usar un generador SOAP Stub para hacer todo el trabajo de crear los objetos Request y el código de red para usted, por ejemplo WSClient ++

Si deseas hacerlo solo, las cosas se ponen un poco complicadas. Android no viene con la biblioteca SOAP. Sin embargo, puede descargar la biblioteca de terceros aquí: http://code.google.com/p/ksoap2-android/

Si necesita ayuda para usarlo, puede encontrar este hilo útil: ¿Cómo llamar a un servicio web .NET desde Android usando KSOAP2?

Si es una llamada REST-API como POST o GET para ser más específica, entonces es muy simple. Solo pase un objeto String con formato JSON en su función y use el paquete org.json para analizar la cadena de respuesta por usted.

Espero que esto ayude.