Comment faire une requête https?
Je devrais faire une demande à l'adresse et envoyer json, json que j'ai sous la forme d'un modèle
public class RequestToPlanfix {
private String cmd;
private String providerId;
private String channel;
private String chatId;
private String planfix_token;
private String message;
private String title;
private String contactId;
private String contactName;
private String contactLastName;
private String contactIco;
private String contactEmail;
private String contactPhone;
private String contactData;
@Convert(converter = Attachments.class)
private Map<String,String> name;
@Convert(converter = Attachments.class)
private Map<String,String> url;
private Boolean isEcho;
}
c'est-à-dire que je devrais envoyer json via https dont les champs correspondent aux champs de cette entité, comment puis-je obtenir et traduire cette entité en json? Comment puis-je faire une demande https plus loin?
alors je recevrai la réponse sous forme de json, dont les champs sont les champs de l'entité suivante
c'est-à-dire que je vais obtenir json et je devrais le faire parse
public class RequestFromPlanfix {
private String cmd;
private String providerId;
private String chatId;
private String contactPhone;
private String channel;
private String token;
private String message;
private String userName;
private String userLastName;
private String userIco;
private String taskEmail;
@Convert(converter = Attachments.class)
private Map<String,String> name;
@Convert(converter = Attachments.class)
private Map<String,String> url;
}
les champs dans deux cas sont différents à certains endroits, j'ai donc créé deux entités, puis lorsque nous enverrons la demande nous enverrons le premier json, et lorsque nous recevrons la réponse le deuxième json, je ne comprends pas comment faire la demande et associer le json avec l'entité, merci
String postUrl = "www.site.com";
Gson gson = new Gson();
HttpClient httpClient = HttpClientBuilder.create().build();
HttpPost post = new HttpPost(postUrl);
StringEntity postingString = new StringEntity(gson.toJson(requestToPlanfix));//gson.tojson() converts your pojo to json
post.setEntity(postingString);
post.setHeader("Content-type", "application/json");
HttpResponse response = httpClient.execute(post);
Vous devez donc passer un HTTP POST
appel.
Et comme il est expliqué votre request
corps ressemble RequestToPlanfix.java
et votre attend Response
sera comme RequestFromPlanfix.java
.
De plus, vous utilisez GSON
pour la transformation.
Maintenant, je vous conseille de redéfinir vos modèles ( RequestToPlanfix.java
& RequestFromPlanfix.java
) comme:
Allez sur: http://www.jsonschema2pojo.org/
Collez d'abord votre
JSON
demande et choisissezGSON, Java
et tout champ supplémentaire que vous jugez valide.- Générez ensuite vos anciens objets Java simples à partir de là.
- De cette façon, nous sommes sûrs qu'il n'y a rien de mal dans notre compréhension JSON - JAVA.
- De même, en fonction du
response
JSON que vous attendez, générez votre fichierRequestFromPlanfix.java
. - Remplacez vos POJO existants par ceux générés ci-dessus.
Maintenant, faisons l' HTTP call
utilisation de Spring RestTemplate
:
public class MakeRestCall {
@Autowired
private RestTemplate restTemplate;
public void getResponse(){
String postUrl = "www.site.com";
// get your request object ready
RequestToPlanfix requestObject = getRequestObject();
// initialize HttpEntity
HttpEntity<RequestToPlanfix> httpEntity = new HttpEntity<>(requestObject);
ResponseEntity<RequestFromPlanfix> response = restTemplate.exchange(postUrl, HttpMethod.POST, httpEntity, RequestFromPlanfix.class);
RequestFromPlanfix responseObject = response.getBody();
// carry-on with your other stuff
}
J'espère que cela t'aides.