HTTP发送POST请求说明

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/zjh_0808_yeah/article/details/51438105

短信下发工具类接口代码逻辑与技术要点概括:

开发工具:MyEclipse9.0+Tomcat6.0x

测试方式:main方法体现,直接调用当前类内部接口方法(参数都走配置化)

工具类主方法:sendMsgUpdown()方法体体现内容:

<1>参数配置化:
eq-- params.properties:
#msg send req public sc url
autoMsgSendUrl=http://localhost:8001/mnp_sp/restful/smssend/send
#msg send req public sc seq
autoMsgSeqTime=20160408181818
#msg send req public sc msg
autoMsgContent=please write need pass content disc
#msg send req public sc tele
autoMsgTelephone=18684880153


<2>参数值获取与校验:
eq--  String url = ParamUtil.getResourceBundle("autoMsgSendUrl");//设置http请求url
eq--   if(url != null && url.trim().length() > 0){ ...

<3>发送httpPOST请求,并进行异常捕获,日志记录:
    try{
        ret = MsgSendUtils.sendPost(url, pin, "utf-8");
       }catch(Exception e){
        LogUtil.error(e+"短信下发失败");
       }

<4>httpPOST请求过程:
1.根据请求url类型获取huc子类对象,打开连接:(HttpURLConnection) realUrl.openConnection();    --realUrl.openConnection函数会根据url类型返回不同的URLConnection子类对象,本文的url是一个http,因此实际返回的是HttpURLConnection(用途:以便用到HttpURLConnection更多API)
2.连接参数属性设置:(http头)
            connection.setReadTimeout(10 * 1000);
            connection.setConnectTimeout(10 * 1000);
            connection.setRequestMethod("POST");--设置POST请求,默认是GET
            connection.setDoInput(true);--读取连接请求,默认设置为true
            connection.setDoOutput(true);--设置是否向connection输出,因为是post请求,参数要放在http正文内,需要设置为true
            connection.setUseCaches(false);--POST请求不能使用缓存
            connection.setRequestProperty("Encoding", encoding.trim());--设置本次连接的Content-Type
3.配置内容需要进行连接:
            connection.getOutputStream()--此处会隐含的进行connect,用这个不调用.connect()也可以
            connection.connect();--从.openConnection至此的配置必须在connect之前完成

4.向对象输出流写出数据,这些数据将存到内存缓冲区中:
            outputStreamWriter.write(postStr);(http正文)
5.
            outputStreamWriter.flush(); --刷新对象输出流,将任何字节都写入潜在的流中
            outputStreamWriter.close();关闭流对象后不能再向对象输出流写入任何数据

6.post与get的区别:post的参数不是放在url字符串里,而是放在http请求的正文内
7.getInputStream()函数的调用标志http请求正式发送到服务器:
            connection.getInputStream();--实际发送请求的代码段就是这里,该方法已调用,表示本次HTTP请求已结束,下面任何向对象输出流的输出已无任何意义




HttpPOST使用总结:
    1.HttpUrlConnection的connect()函数,实际只是建立一个与服务器的tcp连接,并没有实际发送http请求。
    2.http请求格式要求设定顺序是重中之重。
    3.http请求由2部分组成:http头(包含此次请求所有配置都在这里定义)&&正文content。
    4.HttpURLConnection对象不能直接构造,需要通过URL.openConnection()来获得HttpURLConnection对象。



展开阅读全文

没有更多推荐了,返回首页