Voici le format pour l'appel RESTful:
HEADERS:
Content-Type: application/json;charset=UTF-8
Authorization: Bearer Rc7JE8P7XUgSCPogjhdsVLMfITqQQrjg
REQUEST:
GET https://api.example.com/1/realTime?json={"selection":{"includeAlerts":"true","selectionType":"registered","selectionMatch":"","isTheEvent":"true","includeRuntime":"true"}}
Voici mes codes:
try
{
Client client = Client.create();
WebResource webResource =
client.resource("https://api.example.com/1/realTime?json=
{"selection":{"includeAlerts":"true","selectionType":"registered","selectionMatch":"","isTheEvent":"true","includeRuntime":"true"}}");
//add header:Content-Type: application/json;charset=UTF-8
webResource.setProperty("Content-Type", "application/json;charset=UTF-8");
//add header: Authorization Bearer Rc7JE8P7XUgSCPogsdfdLMfITqQQrjg
value = "Bearer " + value;
webResource.setProperty("Authorization", value);
MultivaluedMap<String, String> queryParams = new MultivaluedMapImpl();
queryParams.add("json", js);
//Get response from RESTful Server
jsonStr = webResource.get(String.class);
System.out.println("Testing:");
System.out.println(jsonStr);
}
catch (Exception e)
{
System.out.println (e.getMessage());
e.printStackTrace();
System.exit(0);
}
Mais ça retourne une erreur
com.Sun.jersey.api.client.UniformInterfaceException: GET https://api.example.com/1/realTime? returned a response status of 500
at com.Sun.jersey.api.client.WebResource.handle(WebResource.Java:607)
at com.Sun.jersey.api.client.WebResource.get(WebResource.Java:187)
at net.yorkland.restful.GetThermostatlist.GetThermostats(GetThermostatlist.Java:60)
Je pense que je n'ai pas ajouté les en-têtes correctement.
Est-ce que quelqu'un peut m'aider à le réparer? S'il vous plaît me donner des conseils sur la façon d'ajouter des en-têtes sur demande.
Je vous remercie
Je pense que vous cherchez une méthode d’en-tête (nom, valeur). Voir WebResource.header(String, Object)
Notez qu'il renvoie cependant un générateur, vous devez donc enregistrer la sortie dans votre variable webResource.
J'utilise la méthode header (nom, valeur) et donne le retour à webResource var:
Client client = Client.create();
WebResource webResource =client.resource("uri");
MultivaluedMap<String, String> queryParams = new MultivaluedMapImpl();
queryParams.add("json", js); //set parametes for request
appKey = "Bearer " + appKey; // appKey is unique number
//Get response from RESTful Server get(ClientResponse.class);
ClientResponse response = null;
response = webResource.queryParams(queryParams)
.header("Content-Type", "application/json;charset=UTF-8")
.header("Authorization", appKey)
.get(ClientResponse.class);
String jsonStr = response.getEntity(String.class);
Essaye ça!
Client client = ClientBuilder.newClient();
String jsonStr = client
.target("http:....")
.request(MediaType.APPLICATION_JSON)
.header("WM_SVC.NAME", "RegistryService")
.header("WM_QOS.CORRELATION_ID", "d1f0c0d2-2cf4-497b-b630-06d609d987b0")
.get(String.class);
P.S Vous pouvez ajouter autant d’en-têtes que celui-ci!
Si vous souhaitez ajouter un en-tête à toutes les réponses Jersey, vous pouvez également utiliser un ContainerResponseFilter
, à partir de Documentation du filtre de Jersey :
import Java.io.IOException;
import javax.ws.rs.container.ContainerRequestContext;
import javax.ws.rs.container.ContainerResponseContext;
import javax.ws.rs.container.ContainerResponseFilter;
import javax.ws.rs.core.Response;
@Provider
public class PoweredByResponseFilter implements ContainerResponseFilter {
@Override
public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext)
throws IOException {
responseContext.getHeaders().add("X-Powered-By", "Jersey :-)");
}
}
Assurez-vous de l'initialiser correctement dans votre projet en utilisant l'annotation @Provider
ou de manière traditionnelle avec web.xml
.
Cet extrait fonctionne correctement pour l'envoi du jeton de support à l'aide de Jersey Client.
WebTarget webTarget = client.target("endpoint");
Invocation.Builder invocationBuilder = webTarget.request(MediaType.APPLICATION_JSON);
invocationBuilder.header("Authorization", "Bearer "+"Api Key");
Response response = invocationBuilder.get();
String responseData = response.readEntity(String.class);
System.out.println(response.getStatus());
System.out.println("responseData "+responseData);
String sBodys = "Corps";
En-têtes HashMap = new HashMap <> ();
Client c = Client.create ();
WebResource resource = c.resource (" http: // consulta/rs ");
WebResource.Builder builder = resource.accept (MediaType.APPLICATION_JSON);
constructeur.type (MediaType.APPLICATION_JSON);
si (en-têtes! = null) {
LOGGER.debug("se setean los headers");
for (Map.Entry<String, String> entry : headers.entrySet()) {
String key = entry.getKey();
String value = entry.getValue();
LOGGER.debug("key: "+entry.getKey());
LOGGER.debug("value: "+entry.getValue());
builder.header(key, value);
}
}
Réponse ClientResponse = builder.post (ClientResponse.class, sBodys);