0

问题:我要编辑的html页面中有几个表单,然后提交数据。

我已经阅读了 HttpClient 中的实体,并且遇到了 UrlEncodedFormEntity,据我所知,您可以向其中添加参数,然后您可以发布它们。我觉得这没问题,但我认为是否有不同的方式来发布更改的属性,因为 jsoup 有一种方便的方法来设置属性中的值。这是我尝试使用不同的实体 StringEntity:

    HttpPost post = new HttpPost(url);

    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-Charset", "UTF-8");
    post.setHeader("Cookie", getCookies());
    post.setHeader("Connection", "keep-alive");
    post.setHeader("Content-Type", "application/x-www-form-urlencoded");

    post.setEntity(new StringEntity(updatedHTML, ContentType.TEXT_HTML));

    HttpResponse response = null;
    response = client.execute(post);

updatedHTML我要发布的更改的完整 html 代码在哪里。但正如你猜到的那样,它不起作用。

编辑:我不认为这是问题,但我也有一个 sumbit 按钮,我在这里忽略了它,是否也应该在updatedHTML?

感谢帮助。

4

1 回答 1

0

你的方法有两件事是错误的。
您不能在 StringEntity 中传递 html,因为它不是类的用法
StringEntity 及其派生类旨在携带消息。
第二个错误是您似乎使用该库来更改 html。
您需要处理您发布的内容。这里举个例子。

    List<NameValuePair> formparams = new ArrayList<NameValuePair>();
    formparams.add(new BasicNameValuePair("your parameter name","your parameter value"));
    formparams.add(new BasicNameValuePair("another parameter name","another paramete value"));
    UrlEncodedFormEntity entity = new UrlEncodedFormEntity(formparams, "UTF-8");
    HttpPost httppost = new HttpPost("http://localhost/");
    httppost.setEntity(entity);
    HttpClient httpclient = new DefaultHttpClient();
    HttpResponse response = httpclient.execute(httppost);

我做了一些假设:
你手中有你传递的所有参数(只是你将改变方法,而不是在 html 上工作,而是在 url 上工作)
我的代码段中没有考虑异常处理。该代码是一个简单的示例,向您展示如何处理表单
另请注意,UrlEncodedFormEntity 将为您处理参数。例如在我们的示例中>
您的参数名称=您的参数值&另一个参数名称=另一个参数值

于 2013-08-31T10:18:02.083 回答