gpt4 book ai didi

java - 由于 java 中的 session ,两个 HTTP 请求(一个接一个)不起作用

转载 作者:太空宇宙 更新时间:2023-11-04 14:44:42 24 4
gpt4 key购买 nike

我的 http 请求有问题,我想你可以帮助我。我有一个 JavaEE Web 应用程序,我需要在其上发出一些请求。

特别是,我有两个要求一个接一个地执行。但为了成功,网络应用程序(链接到我公司的另一个网络应用程序)希望请求来自“两个不同的来源”。例如,如果我使用同一个浏览器执行这些请求,它将无法工作,而如果我使用 mozilla 执行第一个请求,然后在“隐身窗口”中使用 mozilla 执行第二个请求,它将工作!很奇怪不是吗?

所以我想对 java 的 post 请求使用相同的策略(我正在为 google glass 开发一个应用程序),但我无法做到这一点。我尝试了很多技巧。这是我的最后一个代码,我使用链接到上下文的 httpclient 本身链接到 cookiestore,并且我清除了 cookie 存储 => 但它不起作用...

  public RestClient(){
httpClient = new DefaultHttpClient();
localContext = new BasicHttpContext();
cookieStore = new BasicCookieStore();
localContext.setAttribute(ClientContext.COOKIE_STORE, cookieStore);
}

private String postHttp(String address, String content, String contentType) {
String text = null;
HttpResponse response;
try {
HttpPost httpPost = new HttpPost(address);
httpPost.setHeader("Content-Type", contentType);
httpPost.setEntity(new StringEntity(content));
response = httpClient.execute(httpPost, localContext);
text = HttpUtil.convertInputStreamToString(response);
cookieStore.clear();
}
catch (Exception e) {
return e.getLocalizedMessage();
}
return text;
}

在 Activity 中:

postData = "myrequest1";
RestClient a = new RestClient();
String result1 = a.postHttp(Constants.AVAIL_ADDRESS, postData, "application/x-www-form-urlencoded;charset=UTF-8");
a = null;
//fine

postData = "myrequest2";
RestClient b = new RestClient();
String result2 = b.postHttp(Constants.BOOKING_ADDRESS, postData, "application/x-www-form-urlencoded;charset=UTF-8");
//error

仅供引用,错误不是来自java,而是来 self 公司的web应用程序,因为它检测到类似 session 的内容(我不确定“ session ”这个词......)

感谢您的帮助!

更新

Maven 依赖项:

<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.3.3</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpmime</artifactId>
<version>4.3.3</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpcore</artifactId>
<version>4.3.2</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.2.3</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.2.3</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.8.2</version>
<scope>test</scope>
</dependency>

最佳答案

您可以尝试通过为两个请求设置不同的用户代理来模仿所需的行为(来自 2 个不同浏览器的 2 个请求),例如:

httpPost.setHeader("User-Agent", "MyAgent");

关于java - 由于 java 中的 session ,两个 HTTP 请求(一个接一个)不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24549157/

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