Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/310.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登录,搜索并获取XML内容_Java_Httpclient - Fatal编程技术网

Java HttpClient登录,搜索并获取XML内容

Java HttpClient登录,搜索并获取XML内容,java,httpclient,Java,Httpclient,我想使用HttpClient登录到一个站点,登录后我想搜索一些东西并检索搜索结果的内容 /** * A example that demonstrates how HttpClient APIs can be used to perform * form-based logon. */ public class TestHttpClient { public static void main(String[] args) throws Exception { D

我想使用
HttpClient
登录到一个站点,登录后我想搜索一些东西并检索搜索结果的内容

/**
 * A example that demonstrates how HttpClient APIs can be used to perform
 * form-based logon.
 */
public class TestHttpClient {

    public static void main(String[] args) throws Exception {

        DefaultHttpClient httpclient = new DefaultHttpClient();

        HttpGet httpget = new HttpGet("http://projecteuler.net/");

        HttpResponse response = httpclient.execute(httpget);
        HttpEntity entity = response.getEntity();

        System.out.println("Login form get: " + response.getStatusLine());
        if (entity != null) {
            entity.consumeContent();
        }
        System.out.println("Initial set of cookies:");
        List<Cookie> cookies = httpclient.getCookieStore().getCookies();
        if (cookies.isEmpty()) {
            System.out.println("None");
        } else {
            for (int i = 0; i < cookies.size(); i++) {
                System.out.println("- " + cookies.get(i).toString());
            }
        }

        HttpPost httpost = new HttpPost("http://projecteuler.net/index.php?section=login");

        List <NameValuePair> nvps = new ArrayList <NameValuePair>();
        nvps.add(new BasicNameValuePair("IDToken1", "username"));
        nvps.add(new BasicNameValuePair("IDToken2", "password"));

        httpost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));

        response = httpclient.execute(httpost);

        System.out.println("Response "+response.toString());
        entity = response.getEntity();

        System.out.println("Login form get: " + response.getStatusLine());
        if (entity != null) {

            InputStream is = entity.getContent();
            BufferedReader br = new BufferedReader(new InputStreamReader(is));
            String str ="";
            while ((str = br.readLine()) != null){
                System.out.println(""+str);
            }
        }

        System.out.println("Post logon cookies:");
        cookies = httpclient.getCookieStore().getCookies();
        if (cookies.isEmpty()) {
            System.out.println("None");
        } else {
            for (int i = 0; i < cookies.size(); i++) {
                System.out.println("- " + cookies.get(i).toString());
            }
        }
        httpclient.getConnectionManager().shutdown();        
    }
}
/**
*演示如何使用HttpClient API执行
*基于表单的登录。
*/
公共类TestHttpClient{
公共静态void main(字符串[]args)引发异常{
DefaultHttpClient httpclient=新的DefaultHttpClient();
HttpGet HttpGet=新的HttpGet(“http://projecteuler.net/");
HttpResponse response=httpclient.execute(httpget);
HttpEntity=response.getEntity();
System.out.println(“登录表单get:+response.getStatusLine());
如果(实体!=null){
entity.consumercontent();
}
System.out.println(“cookies的初始集:”);
列表cookies=httpclient.getCookieStore().getCookies();
if(cookies.isEmpty()){
系统输出打印项次(“无”);
}否则{
对于(int i=0;i

当我从
HttpEntity
打印输出时,它正在打印登录页面内容。使用
HttpClient
登录后,如何获取页面内容?

帖子应该模仿表单提交。不需要先获取登录页面。 如果我看一下,表单似乎已发布到index.php,因此我会尝试更改发布url:

HttpPost httpost = new HttpPost("http://projecteuler.net/index.php");
使用firebug之类的工具查看浏览器中到底发生了什么。也许您应该在登录后执行重定向(HttpClient支持此操作)。
似乎还有一个名为“login”的参数,其值为“login”,正在发布。

谢谢。。。我能够登录并获得下一页的内容。如果下一页有搜索框。。。如何使用HttpClientuse搜索和获取响应使用相同的过程:检查HTML哪些参数应该发布到哪个URL。。。