Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法从需要用户接受才能重定向到目标url的url获取响应_Java_Httpclient_Apache Commons Httpclient - Fatal编程技术网

Java 无法从需要用户接受才能重定向到目标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

我的工作是从“”下载一个文件并放入文件夹。目前,我们正在做它的手工作业运行一次,在15天,但我想下载使用该程序之前,作业处理文件

这里的问题是,当我们在浏览器上点击url()时,第一次它将被重定向到“”,单击“同意”按钮,它将重定向到“”。单击“同意”按钮后,JSESSIONID将保存为浏览器中的cookie。当我们下次单击目标url时,它将直接打开所需页面,而不包含任何条款

我试着从目标url获取响应,但未能实现预期的响应

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。。