gpt4 book ai didi

java - 来自应用程序引擎端点的 HttpRequest。连接重置

转载 作者:行者123 更新时间:2023-12-02 12:12:16 24 4
gpt4 key购买 nike

我正在尝试从 APP Engine 端点发送 HTTP 请求,根据 Postman 上的实验,我知道结果相当大,并且请求通常需要大约一分钟。

这是我的代码:

void testRequest() {
String test = getConnectionString();
URL url = new URL(YARDI_URL);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoOutput(true);
connection.setInstanceFollowRedirects(false);
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-Type", "text/xml");
connection.setConnectTimeout(1000000);
OutputStream os = connection.getOutputStream();
PrintWriter p = new PrintWriter(os);
p.print(test);
p.close();

YardiResponse response = new
YardiResponse(connection.getInputStream().toString());

System.out.println(response.getResponse());
connection.disconnect();
}

我收到两个错误,

第一个是:java.net.ProtocolException:读取输入后无法写入输出。

很长一段时间后,我收到一条java.net.SocketException:连接重置消息。

显然我对 Steam 以及发送 Steam 的方式处理不当。

最佳答案

我强烈推荐http-request基于 apache http api 构建。

private static final HttpRequest<String.class> HTTP_REQUEST = 
HttpRequestBuilder.createPost(YARDI_URL, String.class)
.responseDeserializer(ResponseDeserializer.ignorableDeserializer())
.contentTypeOfBody(ContentType.TEXT_XML)
.connectTimeout(someIntValue)
.socketTimeOut(someIntValue)
.connectionRequestTimeout(someIntValue).
.build();

void testRequest() {
ResponseHadler<String> yardiHandler = HTTP_REQUEST.executeWithBody(yourXml);

int statusCode = yardiHandler.getStatusCode();
String content = yardiHandler.get(); //returns response body as String in this case
}

注意:我建议查看 connectTimeoutsocketTimeOutconnectionRequestTimeout 方法的 javadoc。

关于java - 来自应用程序引擎端点的 HttpRequest。连接重置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46448605/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com