3

RestTemplateを作成するために使用しようとしていPUTます。PUTどういうわけか、それを使って作成したものを問題なく再現することはできませんcurl

curl成功して200を返す私の呼び出しは次のとおりです。

curl https://www.exampe.com \
  -X PUT \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <bearer-token>" \
  -v \
  -d '{"json":"object"}'

curlそして、これがこの呼び出しを複製しようとしたJavaコードです。私の場合、このコードはHttpClientErrorExceptionstatus=406でスローされます。

boolean result = false; 
String url = "https://www.example.com";
String json = "{\"json\":\"object\"}";

RestTemplate rest = new RestTemplate();

HttpHeaders headers = new HttpHeaders();
headers.add("Content-Type", "application/json");
headers.add("Authorization", String.format("Bearer %s", authToken));

HttpEntity<String> requestEntity = new HttpEntity<String>(json, headers);
ResponseEntity<String> responseEntity = 
        rest.exchange(url, HttpMethod.PUT, requestEntity, String.class);

HttpStatus status = responseEntity.getStatusCode();

これらのリクエストの違いは何ですか?Javaバージョンをバージョンにコンバージするにはどうすればよいcurlですか?

4

1 に答える 1

1

アグル、とても愚かです。欠落している部分はAcceptヘッダーでした。どうやらデフォルトでcurl追加Accept: */*されます。Accept適切なヘッダーを期待していたのは、おそらくエンドポイントの実装です。この行を追加すると問題が解決しました:

headers.add("Accept", "*/*");
于 2013-02-27T11:41:37.873 に答える