.net 通过URL推送POST数据具体实现
程序员文章站
2024-02-26 14:31:34
由于到了一家新公司重新开始接触mvc和其他的一些东西。所以的重新拾起许多东西。
前一段时间让我写一个和第三方公司推送对接的方法。通过对方提供的url把数据post推送出去...
由于到了一家新公司重新开始接触mvc和其他的一些东西。所以的重新拾起许多东西。
前一段时间让我写一个和第三方公司推送对接的方法。通过对方提供的url把数据post推送出去。
我把url到了web.config里
复制代码 代码如下:
<add key="urlstrings" value="urladdress"/>
在.cs文件里
复制代码 代码如下:
private string poststring = system.configuration.configurationmanager.appsettings["urlstrings"].tostring();
因为我这边是把数据以xml文本的形式传送出去所以要对数据进行包装,然后通过httpwebrequest请求发送数据。
复制代码 代码如下:
string body = string.format(@"<?xml version=""1.0"" encoding=""utf-8""?>
<body>
<validid>{0}</validid>
<orderid>{1}</orderid>
<count>{2}</count>
<validtime>{3}</validtime>
<remark/>
</body>", consumption.id, consumption.order.agentorderid, consumption.count, consumption.createtime.datetimetodatestring("yyyy-mm-dd hh:mm:ss"));
string request = buildrequest(body);
httpwebrequest hwr = (httpwebrequest)webrequest.create(poststring);
hwr.method = "post";
hwr.headers.add("x-auth-token", httputility.urlencode("openstack"));
hwr.contenttype = "application/json";
//hwr.accept = "application/xml";
hwr.allowautoredirect = true;
byte[] dates = encoding.utf8.getbytes(request);
int count = dates.length;
//stream newstream = hwr.getrequeststream();
memorystream newstream = new memorystream();
try
{
log.add("开始请求");
newstream.write(dates, 0, dates.length);
hwr.contentlength = newstream.length;
stream requeststream = hwr.getrequeststream();
newstream.position = 0l;
newstream.copyto(requeststream);
newstream.close();
requeststream.close();
在这个地方值得我注意的是刚开始的时候我最早的memorystream用的是stream。但是stream数据流会莫名的报错。stream数据流不能进行length查找操作
后来我也是经过网上查找找了解决办法,用memorystream来暂代stream,最后把stream上的一些查找操作放在memorystream上来进行,最后再通过memorystream的copyto()方法将数据导入stream数据流里。
最后的是数据的接收,这个就简单一些
复制代码 代码如下:
httpwebresponse hwresponse =(httpwebresponse)hwr.getresponse();
stream stream = null;
stream= hwresponse.getresponsestream();
streamreader reader = new streamreader(stream, system.text.encoding.default, true);
string file = reader.readtoend();
utf8encoding utf = new utf8encoding();
byte[] bytes = utf.getbytes(file);
file = utf.getstring(bytes);
这个地方有一个对数据编码的转换,我是转为utf-8编码。
最后的是我对接收数据的处理,因为我接收的也是xml文本形式的数据,所以还有做一些处理操作,也方便自己进行后续操作。
复制代码 代码如下:
httpwebresponse hwresponse =(httpwebresponse)hwr.getresponse();
stream stream = null;
stream= hwresponse.getresponsestream();
streamreader reader = new streamreader(stream, system.text.encoding.default, true);
string file = reader.readtoend();
utf8encoding utf = new utf8encoding();
byte[] bytes = utf.getbytes(file);
file = utf.getstring(bytes);
string strbody = tcodeservicecrypt.decrypt3desfrombase64(getelementvalue(doc.element("response").element("body")), userfunc.secretkey);
xdocument xbody = xdocument.parse(strbody);
string userid = getelementvalue(xbody.element("body").element("useid"));
这个就是我这次使用的一些应用。
我是一个新手,请多指教。