以下是我在做一个政府短信平台时使用HttpClient及HttpServer实现短信收发功能。
1.HttpClint(Post请求)
HttpClient httpClient=new HttpClient();
httpClient.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET,"gb2312");
try{
PostMethod postMethod=new PostMethod("http://"+ip+":"+port+"/server工程名/getSms"); //ip、port分别是请求服务器的ip及端口)
httpClient.setConnectionTimeout(3000);
postMethod.setRequestHeader("Content-Type", "application/xml");
postMethod.setRequestBody(getDXXmlInfo()); //设置请求内容
httpClient.executeMethod(postMethod);
}
postMethod.releaseConnection();
return true;
}catch(Exception e){
return false;
}
private String getDXXmlInfo() { //电信请求体xml
msgContent=adjustCont1(msgContent);
StringBuilder sb = new StringBuilder();
sb.append("<?xml version='1.0' encoding='UTF-8'?>");
sb.append("<eRequestService>");
sb.append(" <ServicePoint>"+servicePoint+"</ServicePoint>");
sb.append(" <SubServiceNum>"+subServiceNum+"</SubServiceNum>");
sb.append(" <ServiceID>"+serviceID+"</ServiceID>");
sb.append(" <SequenceID>"+sequenceID+"</SequenceID>");
sb.append(" <Requester>"+requester+"</Requester>");
sb.append(" <Caller>"+caller+"</Caller>");
sb.append(" <Called>"+called+"</Called>");
sb.append(" <Subject>"+subject+"</Subject>");
sb.append(" <MsgID>"+msgID+"</MsgID>");
sb.append(" <MsgContent>"+msgContent+"</MsgContent>");
sb.append(" <FeeNumber>"+feeNumber+"</FeeNumber>");
sb.append(" <FeeType>"+feeType+"</FeeType>");
sb.append(" <FeeCode>"+feeCode+"</FeeCode>");
sb.append(" <MsgFormat>"+msgFormat+"</MsgFormat>");
sb.append(" <LongSms>"+longSms+"</LongSms>");
sb.append("</eRequestService>");
return sb.toString();
}
2.HttpClient(Get请求) 气象局提供的获取天气信息接口
import org.apache.commons.httpclient.HostConfiguration;import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpMethod;
import org.apache.commons.httpclient.methods.GetMethod;
public class WetherInfoService {
public static void main(String[]args){
try{
String url="http://www.weather.com.cn/adat/cityinfo/101280401.html";
HttpClient client=new HttpClient();
client.setConnectionTimeout(3000);
//设置代理
HostConfiguration config=new HostConfiguration();
config.setProxy("10.200.100.81",8080);
client.setHostConfiguration(config);
HttpMethod method=new GetMethod(url);
client.executeMethod(method);
System.out.println("返回的天气信息:"+method.getResponseBodyAsString());
}catch(Exception e){
System.out.println(e);
System.out.println("获取天气信息失败");
}
}
}
3.HttpServer
a.核心代码
import java.io.IOException;
import java.util.Date;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.suntek.xfsms.dao.XfOrderDAO;
import com.suntek.xfsms.log.XfSmsLogger;
import com.suntek.xfsms.util.Constant;
public class SmsService extends HttpServlet{
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// TODO Auto-generated method stub
recSms(req, resp);
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// TODO Auto-generated method stub
doPost(req, resp);
}
protected void recSms(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
Enumeration enu2=req.getParameterNames();
while(enu2.hasMoreElements()){
String paraName=(String)enu2.nextElement();
System.out.println("[SmsService.service]请求参数名字:--------------------->"+paraName);
System.out.println("[SmsService.service]请求参数内容:--------------------->"+req.getParameter(paraName));
}
}
}
b.web.xml注册servlet
<!-- 开启接收短信服务器 -->
<servlet>
<servlet-name>SmsService</servlet-name>
<servlet-class>com.suntek.xfsms.servlet.SmsService</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>SmsService</servlet-name>
<url-pattern>/getSms</url-pattern>
</servlet-mapping>
c.访问
客户端通过http://ip:port/server工程名/getSms 即可访问服务端