我们在一般系统的通信过程中,可以用http协议进行通信。比如一个j2ee项目和一个j2se项目之间进行通信。我们可以使用httpclient方法。看例子:
首先用的jar包:
commons-logging-1.0.4.jar
commons-codec-1.8.jar
commons-httpclient-3.1.jar
这三个jar
这是httpclient例子方法
package com.sysc.xmleditor.httpClient;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLEncoder;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.params.HttpMethodParams;
public class FontAPIHandle {
public static void main(String[] args) throws Exception {
String str="http://localhost:8080/shuju/font";
String s=getContent(str, "哈哈");//设置要传输的参数
System.out.println(s);
}
/**
* 返回接口信息
* @param strUrl,接口参数
* paramStr 参数信息
* @return 服务器返回信息
*/
public static String getContent(String url,String paramStr){
StringBuffer buf = new StringBuffer();
try{
HttpClient client = new HttpClient(); //创建httpclient对象
PostMethod method = new PostMethod(url); //创建post实例
method.addParameter("name", paramStr); //设置要传输的数据
HttpMethodParams param = method.getParams();// 得到参数对象
param.setContentCharset("UTF-8"); //设置参数编码格式
client.executeMethod(method);//发送
//打印服务器返回的状态
System.out.println(method.getStatusLine());
//打印返回的信息
InputStream stream = method.getResponseBodyAsStream();
BufferedReader br = new BufferedReader(new InputStreamReader(stream, "UTF-8"));
String line;
while (null != (line = br.readLine())) {
buf.append(line).append("\n");
}
//释放连接
method.releaseConnection();
}catch(Exception e){
System.out.println("发送信息失败!");
e.printStackTrace();
}
return buf.toString();
}
}
这是web项目的程序:
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// TODO Auto-generated method stub
System.out.println(req.getParameter("data"));
String name=req.getParameter("name");//参数直接用getParameter方法接收就可以了,和普通的url传参一样的
System.out.println(name);
resp.setContentType("text/plain; charset=utf-8");
PrintWriter out=resp.getWriter ();
out.print("欢迎:"+name);
}