JAVA发送HttpClient请求及接收请求结果过程

灰太狼 2022-06-09 02:53 396阅读 0赞

1、写一个HttpRequestUtils工具类,包括post请求和get请求










1


2


3


4


5


6


7


8


9


10


11


12


13


14


15


16


17


18


19


20


21


22


23


24


25


26


27


28


29


30


31


32


33


34


35


36


37


38


39


40


41


42


43


44


45


46


47


48


49


50


51


52


53


54


55


56


57


58


59


60


61


62


63


64


65


66


67


68


69


70


71


72


73


74


75


76


77


78


79


80


81


82


83


84


85


86


87


88


89


90


91


92


93


94


95


96


97


98


99


100


101


102


103



package 
com.brainlong.framework.util.httpclient;


 


import 
net.sf.json.JSONObject;


import 
org.apache.commons.httpclient.HttpStatus;


import 
org.apache.http.HttpResponse;


import 
org.apache.http.client.methods.HttpGet;


import 
org.apache.http.client.methods.HttpPost;


import 
org.apache.http.entity.StringEntity;


import 
org.apache.http.impl.client.DefaultHttpClient;


import 
org.apache.http.util.EntityUtils;


import 
org.slf4j.Logger;


import 
org.slf4j.LoggerFactory;


 


import 
java.io.IOException;


import 
java.net.URLDecoder;


 


public 
class 
HttpRequestUtils {


    
private 
static 
Logger logger = LoggerFactory.getLogger(HttpRequestUtils.
class
);    
//日志记录


 


    
/


     
 httpPost


     
 @param url  路径


     
 @param jsonParam 参数


     
 @return


     
*/


    
public 
static 
JSONObject httpPost(String url,JSONObject jsonParam){


        
return 
httpPost(url, jsonParam, 
false
);


    
}


 


    
/



     
 post请求


     
 @param url         url地址


     
 @param jsonParam     参数


     
 @param noNeedResponse    不需要返回结果


     
 @return


     
/


    
public 
static 
JSONObject httpPost(String url,JSONObject jsonParam, 
boolean 
noNeedResponse){


        
//post请求返回结果


        
DefaultHttpClient httpClient = 
new 
DefaultHttpClient();


        
JSONObject jsonResult = 
null
;


        
HttpPost method = 
new 
HttpPost(url);


        
try 
{


            
if 
(
null 
!= jsonParam) {


                
//解决中文乱码问题


                
StringEntity entity = 
new 
StringEntity(jsonParam.toString(), 
“utf-8”
);


                
entity.setContentEncoding(
“UTF-8”
);


                
entity.setContentType(
“application/json”
);


                
method.setEntity(entity);


            
}


            
HttpResponse result = httpClient.execute(method);


            
url = URLDecoder.decode(url, 
“UTF-8”
);


            
/请求发送成功,并得到响应/


            
if 
(result.getStatusLine().getStatusCode() == 
200
) {


                
String str = 
“”
;


                
try 
{


                    
/读取服务器返回过来的json字符串数据/


                    
str = EntityUtils.toString(result.getEntity());


                    
if 
(noNeedResponse) {


                        
return 
null
;


                    
}


                    
/把json字符串转换成json对象/


                    
jsonResult = JSONObject.fromObject(str);


                

catch 
(Exception e) {


                    
logger.error(
“post请求提交失败:” 
+ url, e);


                
}


            
}


        

catch 
(IOException e) {


            
logger.error(
“post请求提交失败:” 
+ url, e);


        
}


        
return 
jsonResult;


    
}


 


 


    
/


     
 发送get请求


     
 @param url    路径


     
 @return


     
/


    
public 
static 
JSONObject httpGet(String url){


        
//get请求返回结果


        
JSONObject jsonResult = 
null
;


        
try 
{


            
DefaultHttpClient client = 
new 
DefaultHttpClient();


            
//发送get请求


            
HttpGet request = 
new 
HttpGet(url);


            
HttpResponse response = client.execute(request);


 


            
/
请求发送成功,并得到响应/


            
if 
(response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {


                
/
读取服务器返回过来的json字符串数据/


                
String strResult = EntityUtils.toString(response.getEntity());


                
/
把json字符串转换成json对象**/


                
jsonResult = JSONObject.fromObject(strResult);


                
url = URLDecoder.decode(url, 
“UTF-8”
);


            

else 
{


                
logger.error(
“get请求提交失败:” 
+ url);


            
}


        

catch 
(IOException e) {


            
logger.error(
“get请求提交失败:” 
+ url, e);


        
}


        
return 
jsonResult;


    
}


}

2、写业务代码发送Http请求

3、MVC配置文件设置Controller扫描目录










1


2


3


4



<!— 自动扫描且只扫描
@Controller 
—>


<context:component-scan base-
package
=
“com.wiselong.multichannel” 
use-
default
-filters=
“false”
>


    
<context:include-filter type=
“annotation” 
expression=
“org.springframework.stereotype.Controller” 
/>


</context:component-scan>

4、接收Http请求

接收post请求










1


2


3


4


5


6


7


8


9


10


11


12


13


14


15


16


17


18


19


20


21


22


23


24


25


26


27


28


29



@Controller


@RequestMapping
(value = 
“/api/platform/exceptioncenter/exceptioninfo”
)


public 
class 
ExceptionInfoController {


    
//注入


    
@Autowired


    
private 
ExceptionInfoBiz exceptionInfoBiz;


 


    
/*


     
 创建异常信息请求


     
 @param requestBody 请求消息内容


     
 @param request 请求消息头


     
 @return jsonObject


     
/


    
@RequestMapping
(


            
value=
“/create”
,


            
method = RequestMethod.POST


    
)


    
public 
ModelAndView createExceptionInfo(
@RequestBody 
String requestBody, HttpServletRequest request) {


        
JSONObject jsonObject = JSONObject.fromObject(requestBody);


        
ComExceptionInfo comExceptionInfo = 
new 
ComExceptionInfo();


        
comExceptionInfo.setProjectName(jsonObject.getString(
“projectName”
));


        
comExceptionInfo.setTagName(jsonObject.getString(
“tagName”
));


        
exceptionInfoBiz.insert(comExceptionInfo);


        
//返回请求结果


        
JSONObject result= 
new 
JSONObject();


        
result.put(
“success”

“true”
);


        
return 
new 
ModelAndView(
“”
, ResponseUtilsHelper.jsonSuccess(result.toString()));


    
}


  
}

接收get请求










1


2


3


4


5


6


7


8


9


10


11


12


13


14


15


16


17


18


19


20


21


22


23


24


25


26



@Controller


@RequestMapping
(value=
“/api/platform/messagecenter/messages/sms”
)


public 
class 
SmsController {


    
@Autowired


    
SmsSendBiz smsSendBiz;


 


    
/*


     
 接收手机号码和内容往短信发送表插入一条记录


     
 @param requestbody 请求消息内容


     
 @param request 请求消息头


     
 @return jsonObject


     
/


    
@RequestMapping
(


            
value=
“/send”
,


            
method= RequestMethod.GET


    
)


    
public 
ModelAndView sendSms(
@RequestBody 
String requestbody, HttpServletRequest request) {


        
//获取请求URL及url后面传输的参数


        
String url = request.getRequestURL() + 
“?” 
+ request.getQueryString();


        
url = BuildRequestUrl.decodeUrl(url);


        
String telePhone = RequestUtils.getStringValue(request, 
“telePhone”
);


        
String content = RequestUtils.getStringValue(request, 
“content”
);


        
smsSendBiz.insertTtMsQuequ(telePhone,content);


        
return 
new 
ModelAndView(
“”
, ResponseUtilsHelper.jsonResult(
“”

true
));


    
}


}

发表评论

表情:
评论列表 (有 0 条评论,396人围观)

还没有评论,来说两句吧...

相关阅读