`

httpclient - get/post - json/form - 请求方/响应方

 
阅读更多
1、写一个HttpRequestUtils工具类,包括post请求和get请求
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扫描目录

<!-- 自动扫描且只扫描@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请求

@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请求

@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));
    }
}
 
分享到:
评论

相关推荐

    c#下post multipart/form-data和JSON

    总结来说,C#提供了强大的工具来处理`multipart/form-data`和JSON数据的POST请求。无论是上传文件、发送复杂的业务数据还是两者结合,都可以通过`HttpClient`和相关辅助类轻松完成。在实际开发中,要根据具体需求...

    c#模拟post发送json和multipart/form-data格式

    在本主题中,我们将深入探讨如何使用C#来模拟POST请求,以便发送JSON和multipart/form-data格式的数据。这两种数据格式在现代网络应用中非常常见,特别是用于API交互和文件上传。 首先,让我们了解JSON(JavaScript...

    HttpClient实现POST GET和文件下载

    文件上传通常涉及Multipart/form-data格式,可以使用`MultipartEntityBuilder`来构造请求实体: 1. **创建HttpPost请求**:设定目标URL。 2. **构建MultipartEntity**:使用`MultipartEntityBuilder`添加文件和其他...

    C# 使用Get和Post请求获取数据

    当使用GET或POST请求获取到JSON数据后,我们可以用`DeserializeFromJson`方法将其转换为对应的C#对象,便于进一步处理。 综上所述,C#通过`HttpClient`类提供的方法可以方便地执行GET和POST请求,获取Web服务的数据...

    HttpClient请求之基础

    3. **设置请求头**:如`Content-Type`,表明数据格式,可能是`application/x-www-form-urlencoded`(表单提交)或`application/json`(JSON数据)。 4. **将实体添加到HttpPost**:使用`setEntity(entity)`方法将...

    Titanium中Httpclient访问REST 服务

    此外,对于POST请求,我们可能需要设置合适的Content-Type头部,如`application/x-www-form-urlencoded`、`multipart/form-data`或`application/json`,以匹配服务器期望的数据格式。 总的来说,Titanium的...

    c# http协议,实现get或post发送请求 并返回内容

    这段代码创建了一个HttpClient实例,发送一个GET请求到指定的URL,然后读取并返回响应的内容。 **POST请求示例:** ```csharp public async Task&lt;string&gt; SendHttpPostRequest(string url, string postData) { ...

    HttpClient 4.0的post()方法4个关键“头信息”设置

    通过HttpClient,开发者可以轻松地发送HTTP请求并接收响应结果,支持GET、POST等多种请求方式。HttpClient 4.0版本在功能性和稳定性方面都有了很大的提升,是广泛使用的版本之一。 ### 四个关键“头信息”的设置 ...

    httpClient的xml,form,json提交

    例如,XML请求应设置为`application/xml`,表单数据为`application/x-www-form-urlencoded`,JSON数据为`application/json`。 总结来说,HttpClient是Java中强大的HTTP客户端工具,可以方便地处理各种数据类型的...

    C# post方式提交Form表单

    使用`HttpClient`的`PostAsync`方法发送请求,并等待响应。例如:`HttpResponseMessage response = await client.PostAsync(url, request.Content);`。这个异步操作返回一个`HttpResponseMessage`,从中可以获取...

    PB11.2编写POST接口样例

    POST请求通常需要携带特定的请求头,比如Content-Type,用于指示发送的数据类型(如application/x-www-form-urlencoded或application/json)。在PB11.2中,通过`HTTPClient`对象的`AddHeader`方法添加这些头信息。 ...

    java发送post和get请求源码及jar包

    首先,让我们深入理解GET和POST两种请求方法: 1. GET请求:这是最简单的HTTP请求类型,用于从服务器获取资源。GET请求将参数附加到URL中,因此所有请求信息都是可见的。由于GET请求的数据有限且不安全,通常用于...

    httpclient测试请求方法

    在本文中,我们将深入探讨HttpClient的使用,包括如何发送GET、POST请求,处理响应,以及使用相关依赖。 Apache HttpClient 3.0是该库的一个较旧版本,尽管现在推荐使用4.x或5.x版本,但理解3.0版本的基础知识仍然...

    java发送get或post请求源码

    例如,使用Apache HttpClient库发送GET和POST请求会更加直观: 3. **使用Apache HttpClient库发送请求**: Apache HttpClient库提供了更强大的功能,例如支持多线程、超时控制、重试策略等。 - 发送GET请求: ...

    .net 后台Post,get方式调用webapi

    文件上传通常涉及到Multipart/form-data类型的POST请求。首先,创建一个MultipartFormDataContent对象,添加文件作为FormData,然后发送请求: ```csharp public async Task&lt;string&gt; UploadFile(string apiUrl, ...

    Labview创建webservice与C#进行简单的http通信(post,get)

    - HTTP头在请求和响应中都扮演着重要角色,如Content-Type定义了数据格式(如application/json或application/x-www-form-urlencoded)。 4. **互操作性与数据转换**: - LabVIEW和C#之间进行数据交换时,必须考虑...

    HttpClient抓取网页Demo

    HttpClient允许你模拟浏览器行为,发送GET、POST以及其他HTTP方法的请求,并处理服务器返回的各种内容,包括HTML、XML、JSON等。在本文中,我们将深入探讨HttpClient的基本用法,以及如何使用它来抓取网页内容。 ...

    SpringMVC-httpclient

    对于POST请求,通常需要设置"application/json"或"application/x-www-form-urlencoded"作为Content-Type。请求体可以使用`setEntity()`方法设置,比如使用`StringEntity`或`HttpEntityEnclosingRequestBase`的子类。...

    有关HTTP get post

    数据会被封装在请求头的Content-Type字段中,常见的格式有application/x-www-form-urlencoded(表单数据)和application/json(JSON格式)。 无论是GET还是POST,都需要处理服务器的响应,这包括解析响应状态码(如...

    C#请求post

    在C#编程中,HTTP请求是常见...综上所述,C# Winform通过`HttpClient`发送POST请求,包括构建请求数据、设置请求头、发送请求、接收和处理响应。这是一个基本的网络通信流程,实际应用中可能需要根据具体需求进行调整。

Global site tag (gtag.js) - Google Analytics