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

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

1spring

2express

3apache

4json

5api

6服务器

7app

8工具

9post

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;

    }

}

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

三、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>

四、接收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));

    }

}

相关文章
相关标签/搜索