winfrom如何创建一个post接口,返回数据,并提供给用户使用,各位大神有没有示例
网上一大堆 这是我自己写的 和java互通的
//为指定的 URI 方案初始化新的 WebRequest 实例,强制转换为 HttpWebRequest
httpWebRequest = (HttpWebRequest)WebRequest.Create(GXT.BaseLibrary.Application.GetHttpEscape(url).Trim());
//获取或设置 Content-type HTTP 标头的值。
httpWebRequest.ContentType = "application/x-www-form-urlencoded;charset=utf-8";
//获取或设置 Content-lengthHTTP 标头。
httpWebRequest.ContentLength = requestBytes.Length;
//获取或设置请求的方法。
httpWebRequest.Method = "POST";
httpWebRequest.ContentLength = requestBytes.Length;
//获取用于请求的服务点是否使用 100-Continue 行为。
/*
* 1、http 100-continue用于客户端在发送POST数据给服务器前,征询服务器情况,
* 看服务器是否处理POST的数据,如果不处理,客户端则不上传POST数据,如果处理,则POST上传数据。
* 在现实应用中,通过在POST大数据时,才会使用100-continue协议。
* 2、客户端策略。
* 1)如果客户端有POST数据要上传,可以考虑使用100-continue协议。加入头{"Expect":"100-continue"}
* 2)如果没有POST数据,不能使用100-continue协议,因为这会让服务端造成误解。
* 3)并不是所有的Server都会正确实现100-continue协议,如果Client发送Expect:100-continue消息后,
* 在timeout时间内无响应,Client需要立马上传POST数据。
* 4)有些Server会错误实现100-continue协议,在不需要此协议时返回100,此时客户端应该忽略。
* 3、服务端策略。
* 1)正确情况下,收到请求后,返回100或错误码。
* 2)如果在发送100-continue前收到了POST数据(客户端提前发送POST数据),则不发送100响应码(略去)。
*/
httpWebRequest.ServicePoint.Expect100Continue = false;
//设置代理
httpWebRequest.Proxy = Proxy.WebProxy;
//获取或设置 GetResponse 和 GetRequestStream 方法的超时值(以毫秒为单位)。
//默认为100秒,即值为100000
httpWebRequest.Timeout = timeout;
//写入数据到HTTP服务器,完成后关闭流
using (Stream writer = httpWebRequest.GetRequestStream())
{
//写入参数
writer.Write(requestBytes, 0, requestBytes.Length);
}
//接收HTTP服务器做出的响应
HttpWebResponse httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();
//如果服务器已成功处理了请求。 通常,这表示服务器提供了请求的网页
if (httpWebResponse.StatusCode == HttpStatusCode.OK)
{
//获取封装响应体的流
Stream receiveStream = httpWebResponse.GetResponseStream();
//以特定的编码对响应体的流进行解码
StreamReader readStream = new StreamReader(receiveStream);
//声明一个Char数组
Char[] readBuffer = new Char[256];
//从 0 开始,从当前流中将最多的 256 个字符读入 readBuffer。
int count = readStream.Read(readBuffer, 0, 256);
//声明一个字符序列sb
StringBuilder sb = new StringBuilder();
//count 输入流中表示为 Int32 对象的下一个字符。如果不再有可用的字符,则为 -1。
while (count > 0)
{
//向序列化里面加入新的字符串
sb.Append(new String(readBuffer, 0, count));
//继续读
count = readStream.Read(readBuffer, 0, 256);
}
//设置返回的JSON数据
str = sb.ToString();
//关闭响应流
httpWebResponse.Close();
//关闭读取流
readStream.Close();
//设置执行结果为true
isSuccess = true;
}