У меня очень простой сценарий, который я не могу заставить работать. Я пытаюсь отправить строку JSON в конец RESTful, используя cURL для отправки запроса по HTTPS и RESTeasy на сервер.
Мой cURL POST настроен следующим образом:
$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;
И получатель RESTeasy выглядит так:
@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;
}
Эта проблема, с которой я столкнулся, заключается в том, что запрос зависает примерно на 30 секунд, а затем возвращает ответ HTTP 100. Я понимаю, что HTTP 100 означает продолжить с оставшейся части запроса, но я не понимаю, как я должен это сделать.
Я попытался удалить заголовок Content-Length, но, очевидно, я получил 411 (нужна длина контента), так что это тоже не вариант.
Возможно, это проблема с типом контента? Любая помощь очень ценится.