Java 无法从需要用户接受才能重定向到目标url的url获取响应
我的工作是从“”下载一个文件并放入文件夹。目前,我们正在做它的手工作业运行一次,在15天,但我想下载使用该程序之前,作业处理文件 这里的问题是,当我们在浏览器上点击url()时,第一次它将被重定向到“”,单击“同意”按钮,它将重定向到“”。单击“同意”按钮后,JSESSIONID将保存为浏览器中的cookie。当我们下次单击目标url时,它将直接打开所需页面,而不包含任何条款 我试着从目标url获取响应,但未能实现预期的响应Java 无法从需要用户接受才能重定向到目标url的url获取响应,java,httpclient,apache-commons-httpclient,Java,Httpclient,Apache Commons Httpclient,我的工作是从“”下载一个文件并放入文件夹。目前,我们正在做它的手工作业运行一次,在15天,但我想下载使用该程序之前,作业处理文件 这里的问题是,当我们在浏览器上点击url()时,第一次它将被重定向到“”,单击“同意”按钮,它将重定向到“”。单击“同意”按钮后,JSESSIONID将保存为浏览器中的cookie。当我们下次单击目标url时,它将直接打开所需页面,而不包含任何条款 我试着从目标url获取响应,但未能实现预期的响应 import java.io.BufferedReader; impo
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.CookieHandler;
import java.net.CookieManager;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.message.BasicNameValuePair;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
public class HttpTest {
static String cookies;
public static void main(String [] args) throws ClientProtocolException, IOException {
String url = "https://www.frbservices.org/EPaymentsDirectory/FedACHdir.txt";
String agreementURL = "https://www.frbservices.org/EPaymentsDirectory/submitAgreement";
String USER_AGENT = "Mozilla/5.0";
CookieHandler.setDefault(new CookieManager());
HttpClient client = HttpClientBuilder.create().build();
String result;
result =doPost(agreementURL, USER_AGENT, client);
System.out.println(result);
result = doGet(url, USER_AGENT, client);
System.out.println("result:"+result);
//String result =doGet(url, USER_AGENT, client);
if (result != null) {
Document doc = Jsoup.parse(result.toString());
//
Element agreeElement = doc.getElementById("agree_terms_use");
}
}
public static String getCookies() {
return cookies;
}
public static void setCookies(String cookies) {
HttpTest.cookies = cookies;
}
public static String doGet(String url , String USER_AGENT, HttpClient client) throws ClientProtocolException, IOException {
HttpGet request = new HttpGet(url);
request.setHeader("User-Agent", USER_AGENT);
request.setHeader("Accept",
"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
request.setHeader("Accept-Language", "en-US,en;q=0.5");
System.out.println("c"+getCookies());
request.setHeader("Cookie", getCookies());
HttpResponse response = client.execute(request);
int responseCode = response.getStatusLine().getStatusCode();
System.out.println("\nSending 'GET' request to URL : " + url);
System.out.println("Response Code : " + responseCode);
System.out.println(response);
BufferedReader rd = new BufferedReader(
new InputStreamReader(response.getEntity().getContent()));
StringBuffer result = new StringBuffer();
String line = "";
while ((line = rd.readLine()) != null) {
result.append(line);
}
return result.toString();
}
public static String doPost(String url , String USER_AGENT, HttpClient client) throws ClientProtocolException, IOException {
HttpPost post = new HttpPost(url);
post.setHeader("Host", "www.frbservices.org");
post.setHeader("User-Agent", USER_AGENT);
post.setHeader("Accept",
"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
post.setHeader("Accept-Encoding","gzip, deflate, br");
post.setHeader("Accept-Language", "en-US,en;q=0.5");
post.setHeader("Location", "https://www.frbservices.org/EPaymentsDirectory/FedACHdir.txt");
post.setHeader("Connection", "keep-alive");
post.setHeader("Referer", "https://www.frbservices.org/EPaymentsDirectory/agreement.html");
post.setHeader("Content-Type", "application/x-www-form-urlencoded");
post.setHeader("origin", "https://www.frbservices.org");
post.setHeader("Upgrade-Insecure-Requests","1");
//post.setHeader("agreementValue","Agree");
List<BasicNameValuePair> paramList = new ArrayList<BasicNameValuePair>();
paramList.add(new BasicNameValuePair("agreementValue", "Agree"));
post.setEntity(new UrlEncodedFormEntity(paramList));
HttpResponse response = client.execute(post);
int responseCode = response.getStatusLine().getStatusCode();
System.out.println("\nSending 'GET' request to URL : " + url);
System.out.println("Response Code : " + responseCode);
System.out.println("Response: " + response);
BufferedReader rd = new BufferedReader(
new InputStreamReader(response.getEntity().getContent()));
setCookies(response.getFirstHeader("Set-Cookie") == null ? "" :
response.getFirstHeader("Set-Cookie").toString());
StringBuffer result = new StringBuffer();
String line = "";
while ((line = rd.readLine()) != null) {
result.append(line);
}
return result.toString();
}
}
导入java.io.BufferedReader;
导入java.io.IOException;
导入java.io.InputStreamReader;
导入java.net.CookieHandler;
导入java.net.CookieManager;
导入java.util.ArrayList;
导入java.util.List;
导入org.apache.http.HttpResponse;
导入org.apache.http.client.ClientProtocolException;
导入org.apache.http.client.HttpClient;
导入org.apache.http.client.entity.UrlEncodedFormEntity;
导入org.apache.http.client.methods.HttpGet;
导入org.apache.http.client.methods.HttpPost;
导入org.apache.http.impl.client.HttpClientBuilder;
导入org.apache.http.message.BasicNameValuePair;
导入org.jsoup.jsoup;
导入org.jsoup.nodes.Document;
导入org.jsoup.nodes.Element;
公共类HttpTest{
静态字符串cookies;
公共静态void main(字符串[]args)抛出ClientProtocolException,IOException{
字符串url=”https://www.frbservices.org/EPaymentsDirectory/FedACHdir.txt";
字符串协议URL=”https://www.frbservices.org/EPaymentsDirectory/submitAgreement";
字符串USER_AGENT=“Mozilla/5.0”;
setDefault(新的CookieManager());
HttpClient client=HttpClientBuilder.create().build();
字符串结果;
结果=doPost(协议URL、用户\代理、客户端);
系统输出打印项次(结果);
结果=doGet(url、用户\代理、客户端);
System.out.println(“结果:+result”);
//字符串结果=doGet(url、用户\代理、客户端);
如果(结果!=null){
Document doc=Jsoup.parse(result.toString());
//
Element agreeElement=doc.getElementById(“同意使用条款”);
}
}
公共静态字符串getCookies(){
归还饼干;
}
公共静态无效设置cookies(字符串cookies){
HttpTest.cookies=cookies;
}
公共静态字符串doGet(字符串url、字符串用户_代理、HttpClient客户端)抛出ClientProtocolException、IOException{
HttpGet请求=新的HttpGet(url);
setHeader(“用户代理”,用户代理);
request.setHeader(“接受”,
“text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8”);
setHeader(“接受语言”,“en-US,en;q=0.5”);
System.out.println(“c”+getCookies());
setHeader(“Cookie”,getCookies());
HttpResponse response=client.execute(请求);
int responseCode=response.getStatusLine().getStatusCode();
System.out.println(“\n向URL发送'GET'请求:“+URL”);
System.out.println(“响应代码:“+responseCode”);
System.out.println(响应);
BufferedReader rd=新的BufferedReader(
新的InputStreamReader(response.getEntity().getContent());
StringBuffer结果=新的StringBuffer();
字符串行=”;
而((line=rd.readLine())!=null){
结果。追加(行);
}
返回result.toString();
}
公共静态字符串doPost(字符串url、字符串用户_代理、HttpClient客户端)抛出ClientProtocolException、IOException{
HttpPost=新的HttpPost(url);
post.setHeader(“主机”,“www.frbservices.org”);
post.setHeader(“用户代理”,用户代理);
post.setHeader(“接受”,
“text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8”);
post.setHeader(“接受编码”、“gzip、deflate、br”);
post.setHeader(“接受语言”,“en-US,en;q=0.5”);
post.setHeader(“位置”https://www.frbservices.org/EPaymentsDirectory/FedACHdir.txt");
post.setHeader(“连接”、“保持活动”);
post.setHeader(“Referer”https://www.frbservices.org/EPaymentsDirectory/agreement.html");
post.setHeader(“内容类型”、“应用程序/x-www-form-urlencoded”);
post.setHeader(“原点”https://www.frbservices.org");
post.setHeader(“升级不安全请求”,“1”);
//post.setHeader(“agreementValue”、“Agree”);
List paramList=new ArrayList();
添加(新的BasicNameValuePair(“agreementValue”、“Agree”);
post.setEntity(新的UrlEncodedFormEntity(paramList));
HttpResponse response=client.execute(post);
int responseCode=response.getStatusLine().getStatusCode();
System.out.println(“\n向URL发送'GET'请求:“+URL”);
System.out.println(“响应代码:“+responseCode”);
System.out.println(“响应:+Response”);
BufferedReader rd=新的BufferedReader(
新的InputStreamReader(response.getEntity().getContent());
setCookies(response.getFirstHeader(“Set Cookie”)==null?”:
response.getFirstHeader(“Set Cookie”).toString();
StringBuffer结果=新的StringBuffer();
字符串行=”;
而((line=rd.readLine())!=null){
结果。追加(行);
}
返回result.toString();
}
}
您看到了什么?我下载并运行了你的程序,它运行正常。@WillisBlackburn,最终输出是“”的响应,它必须是01100015O011000501224150000000亚特兰大东北桃树街1000号联邦储备银行GA303094470877372245711。。