两个Code,第一个函数是普通请求,Like:http://ip:port/server/xxx.do?para1=¶2
第二个函数是隐藏parameter的请求,同样也可以提交大于255字节的URL请求。(IE和Firefox要求不同),Like:http://ip:port/server/xxx.do.
public String postServerUrl(Object obj,String postMethod) throws IOException, Throwable, IllegalArgumentException, NoSuchMethodException, IllegalAccessException, InvocationTargetException{
// Get and config the connection.
HttpURLConnection conn;
URL requestServiceUrl = new URL(getWebServerUrl()+postMethod+"?"+covertParameter(obj));
System.out.println(requestServiceUrl.toString());
conn = (HttpURLConnection) requestServiceUrl.openConnection();
conn.setDoOutput(true);
conn.setDoInput(true);
conn.setRequestMethod("POST");
conn.setUseCaches(false);
conn.setRequestProperty("Content-Type", "text/xml; charset=utf-8");
conn.setRequestProperty("User-Agent","Mozilla/4.0 (compatible; MSIE 6.0; Windows 2000)");
conn.setInstanceFollowRedirects(true);
conn.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
// Get the response.
InputStream is = conn.getInputStream();
String rc = IOUtils.toString(is);
return rc;
}
第二个,其中参数内定为:questionData,相当于本地的Form把一个大对象提交到远程服务器上。
public String postProcessResponseUrl(String questionData,String postMethod) throws IOException, Throwable, IllegalArgumentException, NoSuchMethodException, IllegalAccessException, InvocationTargetException{
// Get and config the connection.
HttpURLConnection conn;
URL requestServiceUrl = new URL(getWebServerUrl()+postMethod);
System.out.println(requestServiceUrl.toString());
conn = (HttpURLConnection) requestServiceUrl.openConnection();
conn.setDoOutput(true);
conn.setDoInput(true);
conn.setRequestMethod("POST");
conn.setUseCaches(false);
conn.setRequestProperty("Content-Type", "text/xml; charset=utf-8");
conn.setRequestProperty("User-Agent","Mozilla/4.0 (compatible; MSIE 6.0; Windows 2000)");
conn.setInstanceFollowRedirects(true);
conn.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
// Get the response.
PrintWriter out = new PrintWriter(conn.getOutputStream());
String name = "questionData="+URLEncoder.encode(questionData, "UTF-8");
System.out.println(name);
// send the encoded message
out.println(name);
out.close();
InputStream is = conn.getInputStream();
String rc = IOUtils.toString(is);
return rc;
}
好了,还有一个使用到的函数:(使用了注射机制)
private String covertParameter(Object obj) throws SecurityException, NoSuchMethodException, IllegalArgumentException, IllegalAccessException, InvocationTargetException{
String Parameter = "";
Field[] fields = obj.getClass().getFields();
for (int i=0;i<fields.length;i++){
String fileldName= fields[i].getName();
Method getMethod = obj.getClass().getMethod("get"+fileldName.substring(0,1).toUpperCase()+fileldName.substring(1), new Class[]{});
Object value = getMethod.invoke(obj, new Object[]{});
value = value==null?"":value;
if (i>0){
Parameter+="&";
}
Parameter += fields[i].getName()+"="+value.toString();
}
return Parameter;
}
如有疑问请留言。
分享到:
- 2009-10-10 12:26
- 浏览 1302
- 评论(0)
- 论坛回复 / 浏览 (0 / 1872)
- 查看更多
相关推荐
VBS函数集-读写二进制文件、UTF8文件、HTTP GET和POST ...本资源提供了一系列实用的函数和知识点,帮助开发者更好地理解和应用VBS语言和ADODB.Stream对象,实现文件读写、HTTP请求和响应处理、Base64编码和解码等功能。
- **性能**:虽然DWR提供了便利的远程调用,但频繁的AJAX请求可能影响性能,应适当优化请求频率和数据量。 - **调试**:DWR提供了一套内置的调试工具,可以帮助开发者在浏览器中查看和调试DWR调用。 总结,DWR提供...
在本文中,我们将深入探讨如何使用QT库来实现文件的上传和下载功能,特别是与FTP服务器的交互。QT是一个跨平台的应用程序开发框架,广泛应用于C++编程,它提供了丰富的功能,包括网络通信,使得我们可以方便地构建...
在AJAX的成功回调函数中,data参数是一个对象,如果后台服务返回了JSON对象,需要通过data.d来获取实际的数据内容,其中的"d"属性是jQuery用来封装实际响应数据的一个默认字段。 此外,需要注意的是,如果客户端...
它允许程序员通过命令行工具或PHP扩展来发送网络请求,获取远程服务器的数据,这对于数据抓取、API交互以及自动化测试等任务非常有用。本文将详细介绍`curl`在PHP中的应用,以及如何使用提供的`curl.exe`在CMD命令行...
基于lumen框架的guzzlehttp/guzzle组件封装的远程请求的组件 ##useAge ...@param mixed ...$option 不限个数的参数,用与其他参数传参 @return array @throws \GuzzleHttp\Exception\GuzzleException
它们的区别在于传参方式:`call`接收一个参数列表,每个参数单独传递;`apply`接收一个数组或类数组对象,数组中的元素作为参数传递。例如,`fn.call(thisContext, arg1, arg2)`与`fn.apply(thisContext, [arg1, arg...
比如,可以使用API获取用户授权,存储课程数据到本地,或者实现网络请求获取远程课程表数据。 6. 页面路由管理:在微信小程序中,页面间的跳转和传参是通过路由系统实现的。开发者需要掌握如何定义页面路径,以及...
与第十六章类似,这一节进一步讲解了如何精确控制页面跳转,包括传参和状态管理等高级特性。 #### 第十八章:在Silverlight布局控件 Silverlight提供了多种布局控件,如Canvas、StackPanel和Grid,用于组织和定位...
【标题】中的“入门第一个小程序:简单的电影推荐小程序”表明这是一个针对初学者设计的微信小程序项目,主要功能是提供电影推荐服务。这个小程序可能是通过微信开发者工具开发的,旨在帮助学习者了解小程序的基本...
需要注意的是,直接在渲染进程中使用Node.js的API(如require)通常是不安全的,因为它可能会导致安全漏洞,例如远程执行任意代码。因此,Electron提供了安全机制来限制渲染进程访问本地文件系统的权限。 总结来说...