Что такое строгость в android и его использование

Я новичок в android, я следую этому руководству, я нашел код ниже, там он преобразует строку json в StringEntity. Исправьте меня, если я ошибаюсь. StringEntity используется для передачи данных, Заголовки, такие как Accept, Content-type to Server.

// 1. create HttpClient HttpClient httpclient = new DefaultHttpClient(); // 2. make POST request to the given URL HttpPost httpPost = new HttpPost(url); String json = ""; // 3. build jsonObject JSONObject jsonObject = new JSONObject(); jsonObject.accumulate("name", person.getName()); jsonObject.accumulate("country", person.getCountry()); jsonObject.accumulate("twitter", person.getTwitter()); // 4. convert JSONObject to JSON to String json = jsonObject.toString(); // ** Alternative way to convert Person object to JSON string usin Jackson Lib // ObjectMapper mapper = new ObjectMapper(); // json = mapper.writeValueAsString(person); // 5. set json to StringEntity StringEntity se = new StringEntity(json); // 6. set httpPost Entity httpPost.setEntity(se); // 7. Set some headers to inform server about the type of the content httpPost.setHeader("Accept", "application/json"); httpPost.setHeader("Content-type", "application/json"); // 8. Execute POST request to the given URL HttpResponse httpResponse = httpclient.execute(httpPost); // 9. receive response as inputStream inputStream = httpResponse.getEntity().getContent(); . . . 

И как я могу получить данные в servlet / jsp? Должен ли я использовать getStream () или request.getParameter ()

Solutions Collecting From Web of "Что такое строгость в android и его использование"

Объект, содержимое которого извлекается из строки.

StringEntity – это необработанные данные, которые вы отправляете в запросе.

Сервер связывается с использованием JSON, строка JSON может быть отправлена ​​через StringEntity, и сервер может получить ее в теле запроса, проанализировать ее и создать соответствующий ответ.

Мы устанавливаем весь наш стиль юникода, тип контента в этом только

 StringEntity se = new StringEntity(str,"UTF-8"); se.setContentType("application/json"); httpPost.setEntity(se); 

Для получения дополнительной информации вы можете обратиться к этому http://developer.android.com/reference/org/apache/http/entity/StringEntity.html

В соответствии с вашим требованием я редактирую это для метода post

 HttpPost httpPost = new HttpPost(url_src); HttpParams httpParameters = new BasicHttpParams(); httpclient.setParams(httpParameters); StringEntity se = new StringEntity(str,"UTF-8"); se.setContentType("application/json"); httpPost.setEntity(se); try { response = httpclient.execute(httpPost); StatusLine statusLine = response.getStatusLine(); int statusCode = statusLine.getStatusCode(); if(statusCode==200) { entity = response.getEntity(); String responseText = EntityUtils.toString(entity); System.out.println("The response is" + responseText); } else { System.out.println("error");; } } catch(Exception e) { e.printStackTrace(); } 

StringEntity – это необработанные данные, которые вы отправляете в запросе.

Большая часть сервера обменивается данными с использованием JSON, строка JSON может быть отправлена ​​через StringEntity, и сервер может получить ее в теле запроса, проанализировать ее и создать соответствующий ответ.

Accept, Content-type и т. Д. StringEntity как заголовок запроса, но StringEntity является его содержимым.

Заголовок не передается в StringEntity .

У меня была та же проблема, которую я решил в 3 шага с Джексоном в Netbeans / Glashfish.

1) Требования:

Некоторые из ящиков, которые я использовал:

  commons-codec-1.10.jar commons-logging-1.2.jar log4j-1.2.17.jar httpcore-4.4.4.jar jackson-jaxrs-json-provider-2.6.4.jar avalon-logkit-2.2.1.jar javax.servlet-api-4.0.0-b01.jar httpclient-4.5.1.jar jackson-jaxrs-json-provider-2.6.4.jar jackson-databind-2.7.0-rc1.jar jackson-annotations-2.7.0-rc1.jar jackson-core-2.7.0-rc1.jar 

Если я пропустил какой-либо из jar выше, вы можете скачать с Maven здесь http://mvnrepository.com/artifact/com.fasterxml.jackson.core

2) Пример: Java-класс, в котором вы отправляете сообщение. Сначала конвертируйте с Джексоном пользователя Entity в Json, а затем отправьте его в свой класс отдыха.

 import com.fasterxml.jackson.databind.ObjectMapper; import ht.gouv.mtptc.siiv.model.seguridad.Usuario; import java.io.IOException; import java.io.UnsupportedEncodingException; import org.apache.http.HttpResponse; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.DefaultHttpClient; import org.json.simple.JSONObject; public class PostRest { public static void main(String args[]) throws UnsupportedEncodingException, IOException { // 1. create HttpClient DefaultHttpClient httpclient = new DefaultHttpClient(); // 2. make POST request to the given URL HttpPost httpPost = new HttpPost("http://localhost:8083/i360/rest/seguridad/obtenerEntidad"); String json = ""; Usuario u = new Usuario(); u.setId(99L); // 3. build jsonObject JSONObject jsonObject = new JSONObject(); jsonObject.put("id", u.getId()); // 4. convert JSONObject to JSON to String //json = jsonObject.toString(); // ** Alternative way to convert Person object to JSON string usin Jackson Lib //ObjectMapper mapper = new ObjectMapper(); //json = mapper.writeValueAsString(person); ObjectMapper mapper = new ObjectMapper(); json = mapper.writeValueAsString(u); // 5. set json to StringEntity StringEntity se = new StringEntity(json,"UTF-8"); // 6. set httpPost Entity httpPost.setEntity(se); // 7. Set some headers to inform server about the type of the content httpPost.setHeader("Accept", "application/json"); httpPost.setHeader("Content-type", "application/json"); // 8. Execute POST request to the given URL HttpResponse httpResponse = httpclient.execute(httpPost); // 9. receive response as inputStream //inputStream = httpResponse.getEntity().getContent(); } } 

3) Пример: Java Class Rest, где вы хотите получить Entity JPA / Hibernate. Здесь с вашим MediaType.APPLICATION_JSON) вы получаете объект Entity таким образом:

"Id": 99 , "usuarioPadre": null, "nickname": null, "clave": null, "nombre": null, "apellidos": null, "isLoginWeb": null, "isLoginMovil": null, "isLoginMovil": null, Estado ": нулевой," correoElectronico ": нулевой," imagePerfil ": нулевой," Perfil ": нулевой," urlCambioClave ": нулевой," Telefono ": нулевой," Celular ": нулевой," isFree ": нулевой," proyectoUsuarioList» : нулевой, "cuentaActiva": нулевой, "keyUser": нулевой, "isCambiaPassword": нулевой, "videoList": нулевой, "idSocial": нулевой, "tipoSocial": нулевой, "idPlanActivo": нулевой, "cantidadMbContratado": нулевая "cantidadMbConsumido": нулевой, "cuotaMb": нулевой, "fechaInicio": нулевой, "fechaFin": нулевая}»

  import javax.ws.rs.Consumes; import javax.ws.rs.GET; import javax.ws.rs.POST; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; import org.json.simple.JSONArray; import org.json.simple.JSONObject; import org.apache.log4j.Logger; @Path("/seguridad") public class SeguridadRest implements Serializable { @POST @Path("obtenerEntidad") @Consumes(MediaType.APPLICATION_JSON) public JSONArray obtenerEntidad(Usuario u) { JSONArray array = new JSONArray(); LOG.fatal(">>>Finally this is my entity(JPA/Hibernate) which will print the ID 99 as showed above :" + u.toString()); return array;//this is empty } .. 

Некоторые советы. Если у вас возникли проблемы с запуском сети после использования этого кода, возможно, из-за @Consumes in XML … вы должны установить его как @Consumes(MediaType.APPLICATION_JSON)