it-roy-ru.com

что такое строгость в Android и ее использование

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

            // 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();
.
.
.

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

11
LMK

Сущность, содержимое которой извлекается из строки.

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

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

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

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

Согласно вашему требованию я редактирую это для метода записи 

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();

}
10
Bhanu Sharma

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

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

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

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

2
vipul mittal

У меня была та же проблема, которую я решил в 3 Steps с Jackson в 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

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

2) Пример: Java-класс, куда вы отправляете свое сообщение . Сначала преобразуйте с Джексоном пользователя сущности в 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," псевдоним ": null," clave ": null," nombre ": null," apellidos ": null," isLoginWeb ": null," isLoginMovil " : нулевой, "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)

0
diego matos - keke