Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.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 使用HttpClient登录到https://id.wsj.com/access/50f57264bd7fb2d2f6629af6/latest/login_standalone.html_Java_Apache_Httpclient_Apache Httpclient 4.x - Fatal编程技术网

Java 使用HttpClient登录到https://id.wsj.com/access/50f57264bd7fb2d2f6629af6/latest/login_standalone.html

Java 使用HttpClient登录到https://id.wsj.com/access/50f57264bd7fb2d2f6629af6/latest/login_standalone.html,java,apache,httpclient,apache-httpclient-4.x,Java,Apache,Httpclient,Apache Httpclient 4.x,我正在尝试登录URLhttps://id.wsj.com/access/50f57264bd7fb2d2f6629af6/latest/login_standalone.html使用HttpClient。但是当通过代码调用时,客户端不会从加载css。我使用Fiddler调试了代码 我的代码: public void getRequest() throws ClientProtocolException, IOException { try { HttpHost proxy

我正在尝试登录URL
https://id.wsj.com/access/50f57264bd7fb2d2f6629af6/latest/login_standalone.html
使用HttpClient。但是当通过代码调用时,客户端不会从加载css。我使用
Fiddler
调试了代码

我的代码:

public void getRequest() throws ClientProtocolException, IOException {
    try {
        HttpHost proxy = new HttpHost("127.0.0.1", 8888);
        HttpClient httpclient = HttpClientBuilder.create().setProxy(proxy).setUserAgent("").build();
        HttpContext localContext = new BasicHttpContext();
        try {
            BasicCookieStore cookieStore = new BasicCookieStore();
            localContext.setAttribute(HttpClientContext.COOKIE_STORE, cookieStore);
            HttpHost target = new HttpHost("id.wsj.com", 443, "https");
            HttpGet req = new HttpGet("/access/50f57264bd7fb2d2f6629af6/latest/login_standalone.html");
            req.addHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
            req.addHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.154 Safari/537.36");

            System.out.println("executing request to " + target + " via " + proxy);
            HttpResponse rsp = httpclient.execute(target, req, localContext);
            System.out.println("Status Code" + rsp.getStatusLine().getStatusCode());
            printHeaders(rsp.getAllHeaders());
            printCookies(cookieStore);

        } finally {
            httpclient.getConnectionManager().shutdown();
        }

    } catch (IOException e) {
        e.printStackTrace();
    }
}
通过Java的Fiddler快照

通过chrome创建快照


我是新手,所以请帮助专家!谢谢

IMO-您正在抓取一个html页面,您可能不需要登录。假设没有API(WSJ的官方登录调用-就像您看到的API登录一样)

您应该使用您的调试工具,以便查看当您单击WSJ上的“登录”按钮时发布的内容。您正在处理的页面在处理过程中为时过早。要以编程方式登录,为什么页面中与登录页面上“onLogonRequested”事件相关的对话框(而不是进程)的格式与此相关?当单击登录按钮时,关注页面和JS通过XHR发送给WSJ服务器的内容。然后使用HTTP客户机格式化一篇文章,该文章尽可能接近上面提到的XHR文章

您可能还需要解决路径节点“访问”和“最新”之间的“会话”变量。如果这只是cookie信息,您可以忽略它。同样,它与页面对话框混合在一起,而不是用于登录的api


这可能会让你登录

在一切发生之前,我试过你说的话。我在提交表单上使用了
jquery
serialize函数来查看POST请求使用的所有参数。但它失败了。我捕获了响应,发现登录表单没有完全加载,提交按钮被禁用,因为css没有从
akamai
服务器加载。从那时起,我试图首先加载整个页面正确!使用另一个导线电平分析仪。你必须确切地知道邮件上写的是什么。如果您的jquery工具无法剪切它,请找到另一个工具。。试试wireshark。在你确定要发布的内容之前,你一直处于黑暗中。标题是什么?帖子的主体是什么?我用
Fiddler
分析了它!代码不会像谷歌浏览器那样从服务器加载css,并且会显示正确的页面<代码>我在我的机器上屏蔽了AKAMAI域一次,Google Chrome加载的页面(已禁用提交按钮的页面)与脚本加载的页面相同(捕获点击后响应)因此无法登录:(