所以我遇到了一个问题,服务支持人员让我用HTML支持他们。 所以我需要获得由
生成的等效HTMLHttpClient client = new HttpClient();
PostMethod post = new PostMethod( "https://www.url.to/post-to" );
NameValuePair[] params = {
new NameValuePair( "NAME", name ),
new NameValuePair( "EMAIL", email ),
for( NameValuePair param : params ){
post.setParameter(param.getName(), param.getValue());
}
是否可以将其作为HTML获取或将请求作为字符串发送,包含所有标题等?
答案 0 :(得分:1)
如果您使用某些日志记录框架,可以将Apache HttpClient配置为记录通过它的请求和响应,请参阅Wire logging。从文档来看,如果正确设置了日志框架,这应该足以启用它
System.setProperty("org.apache.commons.logging.Log", "org.apache.commons.logging.impl.SimpleLog");
System.setProperty("org.apache.commons.logging.simplelog.showdatetime", "true");
System.setProperty("org.apache.commons.logging.simplelog.log.httpclient.wire", "debug");
System.setProperty("org.apache.commons.logging.simplelog.log.org.apache.commons.httpclient", "debug");
编辑
如果使用Apache Commons Logging
作为日志框架,这些设置就可以了。上述链接还包含为log4j
和java.util.logging
设置此内容的示例。
答案 1 :(得分:0)
您可以编写一个等效的HTML表单,将相同的两个参数发送到同一个URL。
但是,如果您为此连接导致的问题打开支持服务单,则HTML可能不会非常有用,因为浏览器可能会向URL发送不同的标头,即使请求正文是相同。
您可以使用post
从post.getRequestHeaders()
变量中获取请求标头。它返回一个类型为Header[]
的数组,您必须将其转换为字符串。通过urlencoding值,可以很容易地从参数重建消息体。正文始终采用NAME=urlencodedname&EMAIL=urlencodedemail
形式。