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
));
}
}
http://blog.sina.com.cn/s/blog_75a8cfac01013aim.html
http://blog.csdn.net/fireelement/article/details/2497136
相关推荐
总结来说,C#提供了强大的工具来处理`multipart/form-data`和JSON数据的POST请求。无论是上传文件、发送复杂的业务数据还是两者结合,都可以通过`HttpClient`和相关辅助类轻松完成。在实际开发中,要根据具体需求...
在本主题中,我们将深入探讨如何使用C#来模拟POST请求,以便发送JSON和multipart/form-data格式的数据。这两种数据格式在现代网络应用中非常常见,特别是用于API交互和文件上传。 首先,让我们了解JSON(JavaScript...
文件上传通常涉及Multipart/form-data格式,可以使用`MultipartEntityBuilder`来构造请求实体: 1. **创建HttpPost请求**:设定目标URL。 2. **构建MultipartEntity**:使用`MultipartEntityBuilder`添加文件和其他...
当使用GET或POST请求获取到JSON数据后,我们可以用`DeserializeFromJson`方法将其转换为对应的C#对象,便于进一步处理。 综上所述,C#通过`HttpClient`类提供的方法可以方便地执行GET和POST请求,获取Web服务的数据...
3. **设置请求头**:如`Content-Type`,表明数据格式,可能是`application/x-www-form-urlencoded`(表单提交)或`application/json`(JSON数据)。 4. **将实体添加到HttpPost**:使用`setEntity(entity)`方法将...
此外,对于POST请求,我们可能需要设置合适的Content-Type头部,如`application/x-www-form-urlencoded`、`multipart/form-data`或`application/json`,以匹配服务器期望的数据格式。 总的来说,Titanium的...
这段代码创建了一个HttpClient实例,发送一个GET请求到指定的URL,然后读取并返回响应的内容。 **POST请求示例:** ```csharp public async Task<string> SendHttpPostRequest(string url, string postData) { ...
通过HttpClient,开发者可以轻松地发送HTTP请求并接收响应结果,支持GET、POST等多种请求方式。HttpClient 4.0版本在功能性和稳定性方面都有了很大的提升,是广泛使用的版本之一。 ### 四个关键“头信息”的设置 ...
例如,XML请求应设置为`application/xml`,表单数据为`application/x-www-form-urlencoded`,JSON数据为`application/json`。 总结来说,HttpClient是Java中强大的HTTP客户端工具,可以方便地处理各种数据类型的...
使用`HttpClient`的`PostAsync`方法发送请求,并等待响应。例如:`HttpResponseMessage response = await client.PostAsync(url, request.Content);`。这个异步操作返回一个`HttpResponseMessage`,从中可以获取...
POST请求通常需要携带特定的请求头,比如Content-Type,用于指示发送的数据类型(如application/x-www-form-urlencoded或application/json)。在PB11.2中,通过`HTTPClient`对象的`AddHeader`方法添加这些头信息。 ...
首先,让我们深入理解GET和POST两种请求方法: 1. GET请求:这是最简单的HTTP请求类型,用于从服务器获取资源。GET请求将参数附加到URL中,因此所有请求信息都是可见的。由于GET请求的数据有限且不安全,通常用于...
在本文中,我们将深入探讨HttpClient的使用,包括如何发送GET、POST请求,处理响应,以及使用相关依赖。 Apache HttpClient 3.0是该库的一个较旧版本,尽管现在推荐使用4.x或5.x版本,但理解3.0版本的基础知识仍然...
例如,使用Apache HttpClient库发送GET和POST请求会更加直观: 3. **使用Apache HttpClient库发送请求**: Apache HttpClient库提供了更强大的功能,例如支持多线程、超时控制、重试策略等。 - 发送GET请求: ...
文件上传通常涉及到Multipart/form-data类型的POST请求。首先,创建一个MultipartFormDataContent对象,添加文件作为FormData,然后发送请求: ```csharp public async Task<string> UploadFile(string apiUrl, ...
- HTTP头在请求和响应中都扮演着重要角色,如Content-Type定义了数据格式(如application/json或application/x-www-form-urlencoded)。 4. **互操作性与数据转换**: - LabVIEW和C#之间进行数据交换时,必须考虑...
HttpClient允许你模拟浏览器行为,发送GET、POST以及其他HTTP方法的请求,并处理服务器返回的各种内容,包括HTML、XML、JSON等。在本文中,我们将深入探讨HttpClient的基本用法,以及如何使用它来抓取网页内容。 ...
对于POST请求,通常需要设置"application/json"或"application/x-www-form-urlencoded"作为Content-Type。请求体可以使用`setEntity()`方法设置,比如使用`StringEntity`或`HttpEntityEnclosingRequestBase`的子类。...
数据会被封装在请求头的Content-Type字段中,常见的格式有application/x-www-form-urlencoded(表单数据)和application/json(JSON格式)。 无论是GET还是POST,都需要处理服务器的响应,这包括解析响应状态码(如...
在C#编程中,HTTP请求是常见...综上所述,C# Winform通过`HttpClient`发送POST请求,包括构建请求数据、设置请求头、发送请求、接收和处理响应。这是一个基本的网络通信流程,实际应用中可能需要根据具体需求进行调整。