相关疑难解决方法(0)

如何使用java.net.URLConnection来触发和处理HTTP请求

java.net.URLConnection在这里经常询问使用情况,Oracle教程对此非常简洁.

该教程基本上只显示了如何触发GET请求并读取响应.它没有解释如何使用它来执行POST请求,设置请求标头,读取响应标头,处理cookie,提交HTML表单,上传文件等.

那么,我如何使用java.net.URLConnection触发和处理"高级"HTTP请求?

java http urlconnection httprequest httpurlconnection

1903
推荐指数
11
解决办法
100万
查看次数

如何以编程方式将POST请求发送到JSF页面而不使用HTML表单?

我有非常简单的JSF bean,如下所示:

import org.jboss.seam.annotations.Name;

@Name(Sample.NAME)
public class Sample {

    public static final String NAME="df";

    private String text = "text-test";

    public void sampleM(){
        System.out.println("Test: "+text);
    }

    public String getText() {
        return text;
    }

    public void setText(String text) {
        this.text = text;
    }
}
Run Code Online (Sandbox Code Playgroud)

和JSF表单连接这个组件:

<h:form id="sampleForm">
        <h:commandButton id="sampleButton" action="#{df.sampleM()}" value="ok" />
</h:form>
Run Code Online (Sandbox Code Playgroud)

现在,我想以编程方式将POST请求发送到此表单.

根据我的调查,这里的关键是POST参数.正确选择可以得到正确的结果(字符串'测试:文本测试'打印在serwer的控制台上).

所以问题是:我应该如何选择正确的POST数据?

上面显示的JSF表单生成此HTML表单:

<form id="sampleForm" name="sampleForm" method="post" action="/pages/main/main.smnet" enctype="application/x-www-form-urlencoded">
    <input type="hidden" name="sampleForm" value="sampleForm" />
    <input id="sampleForm:sampleButton" type="submit" name="sampleForm:sampleButton" value="ok" />
    <input type="hidden" name="javax.faces.ViewState" id="javax.faces.ViewState" value="j_id65" autocomplete="off" /> …
Run Code Online (Sandbox Code Playgroud)

jsf http-post jsf-2 http-request-parameters

5
推荐指数
1
解决办法
2万
查看次数

如何使用 python 请求和 bs4 (BeautifulSoup) 模块使用 cookie 和 javascript“javax.faces.ViewState”CDATA 在 .jsf 网站中进行网页抓取?

我想自动从该网站提取数据:

\n

http://www.snirh.gov.br/hidroweb/publico/medicoes_historicas_abas.jsf

\n

提取我想要的数据应遵循的步骤的说明:

\n

从上面的 url 开始,单击“S\xc3\xa9ries Hist\xc3\xb3ricas”。您应该看到一个页面,其中包含带有一些输入的表单。就我而言,我只需要在“C\xc3\xb3digo da Esta\xc3\xa7\xc3\xa3o”输入中输入车站代码。假设电台代码是 938001,插入该代码并点击“Consultar”。现在您应该看到很多复选框。选中“Selecionar”下面的一项,该选项将选中所有复选框。假设我不需要各种数据,我想要降雨率和流量,我只选中“Chuva”下面的复选框和“Vaz\xc3\xa3o”下面的另一个复选框。之后需要选择要下载的文件类型,选择“Arquivo Texto (.TXT)”,这是.txt格式。之后需要生成文件,为此单击“Gerar Arquivo”。之后就可以下载文件,只需单击“Baixar Arquivo”即可。

\n

注意:该网站目前版本为v1.0.0.12,以后可能会有所不同。

\n

我有一个车站代码列表。想象一下,这些操作执行超过 1000 次会有多糟糕?!我想自动化这个!

\n

巴西的许多人一直在尝试从该网站自动提取数据。我发现的一些:

\n

非常旧的:https://www.youtube.com/watch?v =IWCrC0MlasQ

\n

其他:\n https://pt.stackoverflow.com/questions/60124/gerar-e-baixar-links-programaticamente/86150#86150

\n

https://pt.stackoverflow.com/questions/282111/r-download-de-dados-do-portal-hidroweb

\n

我发现的早期尝试,但这也不起作用,因为该网站已更改: https: //github.com/duartejr/pyHidroWeb

\n

所以很多人都需要这个,并且由于网站的更新,上述解决方案都没有更有效。

\n

我不想使用 selenium,与使用 requests 库的解决方案相比,它很慢,并且需要一个接口。

\n

我的尝试:

\n
#!/usr/bin/env python\n# -*- coding: utf-8 -*-\n\nfrom bs4 import BeautifulSoup\nimport requests\nfrom urllib import parse\n\n\nURL = \'http://www.snirh.gov.br/hidroweb/publico/apresentacao.jsf\'\n\ns = requests.Session()\n\nr = s.get(URL)\n\nJSESSIONID = s.cookies[\'JSESSIONID\']\n\nsoup = BeautifulSoup(r.content, "html.parser")\n\njavax_faces_ViewState = soup.find("input", {"type": "hidden", "name":"javax.faces.ViewState"})[\'value\']\n\n\nd = {}\nd[\'menuLateral:menuForm\'] …
Run Code Online (Sandbox Code Playgroud)

python jsf cdata web-scraping python-requests

5
推荐指数
1
解决办法
4396
查看次数

http客户端和jsoup之间的连接

我正在研究如何抓取信息.关于http客户端如何与jsoup相关,我有点困惑.你需要http客户端使用jsoup,还是jsoup可以替换http客户端?如果你仍然需要http客户端,它执行的功能是什么,jsoup不能自己做?

jsoup apache-commons-httpclient

1
推荐指数
1
解决办法
1845
查看次数