Pasando el objeto JSON en la URL del servicio Web RESTFUL en Android?
Estoy trabajando con JSON Restful web serivces donde tengo que pasar objeto JSON en la URL de servicio. He creado el objeto de JSON con éxito pero conseguir la excepción cuando mi URL creó la conexión del HTTP con el SERVIDOR.
Abajo he mencionado mi URL:
- convertir xml a json android
- Código de respuesta inesperado 500 para el método POST
- Obtener Elementos de JSON Array Android
- Cómo analizar una clave JSON dinámica en un resultado anidado JSON?
- Enviar objeto json al servidor HTTP en android
http://72.5.167.50:8084/UpdateProfileInfo?{"ProfileEditId":"917","ContactsEmail":[{"Email":"dsfs","ContactId":""}],"ContactsPhone":[{"CountryId":"+1","Type":"2","Phone":"345345"}],"ProfileId":"290","LastName":"demo","GroupId":"1212","Title":"sdf","City":"dsf","TemplateId":"1212","State":"dsf","AuthCode":"9bcc6f63-2050-4c5b-ba44-b8103fbc377a","Address":"sdf","FirstName":"demo","ContactId":"","Zip":"23","Company":"tv"}
Obtener java.lang.IllegalArgumentException: Illegal character in query
en el código:
int TIMEOUT_MILLISEC = 100000; // 1000 milisec = 1 seconds int SOCKET_TIMEOUT_MILISEC = 120000; // 2 minutes HttpParams httpParams = new BasicHttpParams(); HttpConnectionParams.setConnectionTimeout(httpParams, TIMEOUT_MILLISEC); HttpConnectionParams.setSoTimeout(httpParams, SOCKET_TIMEOUT_MILISEC); HttpClient client = new DefaultHttpClient(httpParams); HttpPost request = new HttpPost(url); HttpResponse response = client.execute(request); responseString = request(response);
Por favor, sugerirme Si estoy haciendo algo mal con mi URL.
* EDITADO: * Intentado con una llave todavía conseguir Exeception:
http://72.5.167.50:8084/UpdateProfileInfo?profileinof={"ProfileEditId":"917","ContactsEmail":[{"Email":"sdf","ContactId":""}],"ContactsPhone":[{"CountryId":"+1","Type":"2","Phone":"345345345"}],"ProfileId":"290","LastName":"demo","GroupId":"1212","Title":"dsf","City":"dsf","TemplateId":"1212","State":"dsf","AuthCode":"d968273a-0110-461b-8ecf-3f9c456d17ac","Address":"dsf","FirstName":"demo","ContactId":"","Zip":"23","Company":"tv"}
- Cómo evaluar expresiones de usuario en un entorno limitado
- Android - Https conexión a un servicio WCF de .NET da SSLException: "Ningún certificado de compañero"
- Android volley JsonObjectRequest que no devuelve ningún cuerpo sólo 200
- Cómo obtener la lista de usuarios en el análisis mediante la aplicación de Android
- Múltiples elementos seleccionados RecyclerView in Activity.java
- ¿Cómo comprobar si existe una llave json?
- Cómo pasar JSON Array utilizando objeto JSON
- JSONObject.toString: cómo no escapar de barras
Hay un formato diferente de solicitud HTTP que necesitamos hacer para este tipo de SOLICITUD.
He mencionado mi código abajo para esto.
public JSONObject getJSONObject(){ return jsonObj; }
El método ABove me devuelve una cadena JSON que se pasa en el siguiente método.
public static HttpResponse makeRequest(String url) throws Exception { //instantiates httpclient to make request DefaultHttpClient httpclient = new DefaultHttpClient(); //url with the post data HttpPost httpost = new HttpPost(url); //convert parameters into JSON object JSONObject holder = getJSONObject(); //passes the results to a string builder/entity StringEntity se = new StringEntity(holder.toString()); //sets the post request as the resulting string httpost.setEntity(se); httpost.setHeader("Accept", "application/json"); httpost.setHeader("Content-type", "application/json"); //Handles what is returned from the page ResponseHandler responseHandler = new BasicResponseHandler(); return httpclient.execute(httpost, responseHandler); }
Stack post me ayudó a hacer esta tarea … !!!
El IP no es correcto.
IP se forma con 4 bytes. Cada byte es un valor de 0 a 255, no puede ser 7 mil.
Http: // 7232 .25.1617.50: 1084
Edit: Está bien, editó su pregunta. Estás enviando un JSON como parámetro. Pero este parámetro no tiene "clave".
Debiera ser:
/ UpdateProfileInfo? Info = {"ProfileEditId": "917", […….]
Edit: Creo que esto debería ser así:
/ UpdateProfileInfo? Info = "{'ProfileEditId': '917', […….]}"
Observe que el valor está rodeado por "
, y el interior "
se reemplazan ahora por '
Probablemente el problema es que estás intentando POSTAR un objeto JSON como un parámetro de url.
Si realmente tiene que ser un param de url, que tiene que ser urlencoded .
Si más bien debería ser una solicitud POST normal, sugiero que utilice un ayudante de alto nivel :
new RESTClient2(ctx).post("http://72.5.167.50:8084", jsonObject);
Puedo ver una necesidad de trabajar con POJOs, convirtiéndolos a las secuencias de JSON y transmitir esa información de la secuencia sobre HTTP. Hay muchas buenas librerías de tipo android / java / apache / volley que permiten eso.
Sin embargo, no entiendo, de hecho no estoy de acuerdo con su requisito de utilizar GET y los parms de URL para el transporte de su cadena de JSON?
Es muy fácil hacer lo siguiente:
POJO -> a JSON -> toString -> a http.string.entity -> POST
¿Por qué no volver a examinar su arquitectura y considerar el uso de POST no obtener.
Entonces su fácil, 2 paso:
Ver ejemplo "request.setEntity (…"
Su código se verá así:
httpPost.setEntity(new StringEntity(pojo.toJSON().toString()));
- Cómo hacer una miniatura de una foto tomada de la cámara?
- Android Studio + dropbox-android-sync-sdk-1.1.2