ノックアップした小さなジャージクライアントテストを介して、リモートマシンで実行しているサービスに接続できません。
次のようにcURLを使用して接続とPOSTを正常に行うことができます。
curl -X POST -T test.txt -H "Content-Type: application/octet-stream" http://remote-machine:11181/data?start=123
私が設定したサービスremote-machine
はこれを受け入れて期待どおりに機能しますが、ジャージクライアントの実装でまったく同じURIを処理すると、次の例外が発生します。
com.sun.jersey.api.client.UniformInterfaceException: POST http://remote-machine:11181/data?start=123 returned a response status of 502 Bad Gateway
at com.sun.jersey.api.client.WebResource.voidHandle(WebResource.java:707)
at com.sun.jersey.api.client.WebResource.access$400(WebResource.java:74)
at com.sun.jersey.api.client.WebResource$Builder.post(WebResource.java:553)
私のジャージークライアントは次のとおりです。
public static void main(String[] args) throws IOException {
if (args.length < 2) {
System.err.println("Usage: " + TestJerseyClient.class.getName() + " <uri> <input file>");
System.exit(-1);
}
File file = new File(args[1]);
if (!file.exists()) {
System.err.println("File not found: " + file.getAbsolutePath());
System.exit(-2);
}
URI uri = URI.create(args[0]);
Client client = new Client();
client.setChunkedEncodingSize(16 * 1024);
FileInputStream stream = new FileInputStream(file);
try {
System.out.println("Sending " + file.getPath());
client.resource(uri).type(MediaType.APPLICATION_OCTET_STREAM).post(stream);
System.out.println("Done");
} catch (Exception e) {
e.printStackTrace();
} finally {
Closeables.closeQuietly(stream);
}
}
私のジャージクライアントがcURLと同じURIを与えられたときに、これらの502BadGatewayエラーが発生する理由について助けていただければ幸いです。
(おそらくプロキシの問題かもしれないと思いますが、cURLのようにジャージを拾うことに関しては、私にはわかりません。)