欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2024-02-28 15:39:40
由于到了一家新公司重新开始接触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查找操作

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

后来我也是经过网上查找找了解决办法,用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"));

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

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

上一篇: Python3安装Pymongo详细步骤

下一篇: