当前位置: 移动技术网 > IT编程>开发语言>.net > .net 通过URL推送POST数据具体实现

.net 通过URL推送POST数据具体实现

2017年12月12日  | 移动技术网IT编程  | 我要评论

爆炸妞,黄新初被查,李佳兴

由于到了一家新公司重新开始接触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"));

这个就是我这次使用的一些应用。

我是一个新手,请多指教。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网