J'ai un scénario très simple que je ne peux pas travailler. J'essaye de POSTER une chaîne JSON à un endoint RESTful en utilisant cURL pour envoyer la demande sur HTTPS et RESTeasy sur le serveur.POST avec le corps JSON consommé par RESTeasy - HTTP 100
Mon Flexion est configuré ainsi:
$ch = curl_init();
$content = json_encode($validJsonString);
curl_setopt($ch, CURLOPT_URL, 'https://foobar.com/test?trackingId=12345');
curl_setopt($ch, CURLOPT_POSTFIELDS, array('json' => $content));
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
$headers = array(
'Content-Type: application/json',
'Content-Length: ' . strlen($content)
);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec ($ch);
$httpResponseCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$json = json_decode($response);
curl_close ($ch);
return $json;
Et le recipiant RESTeasy ressemble:
@POST
@Path("/test")
@Produces("application/json")
public String addObjectCommentAsJSON( @FormParam("json") String validJsonString,
@QueryParam("trackingId") String trackingId) {
Gson gson = new Gson();
SomeObject someObject = gson.fromJson(validJsonString, SomeObject.class);
String responseString = methodThatReturnsAJsonString(trackingId, someObject);
return responseString;
}
Cette question que j'ai est que la demande se bloque pendant environ 30 secondes, puis retourne une Réponse HTTP 100 Je comprends que HTTP 100 signifie continuer avec le reste de la demande, mais je ne comprends pas comment je suis censé faire cela.
J'ai essayé de supprimer l'en-tête Content-Length, mais évidemment, je reçois un 411 (nécessite la longueur du contenu) donc ce n'est pas une option non plus.
Est-ce un problème avec le type de contenu peut-être? Toute aide est très appréciée.
Copie possible de http://stackoverflow.com/questions/4271621/php-curl-post-json – cmbuckley
Selon php.net si vous passez un tableau à 'CURLOPT_POSTFIELDS' il est codé pour' multipart/form-data '. Que se passe-t-il si vous passez la chaîne json directement? – abraham
@cbuckley J'ai vu ça mais il n'y a aucune mention de RESTeasy dans l'autre et c'est 50% du problème potentiel ici ... – travega