HttpWebRequest和包含值的帖子URL的问题

时间:2011-04-21 17:40:17

标签: c# post httpwebrequest

我正在尝试发布到看起来像这样的网址: “http://domain.com/api/?application_id=user&format=json&session_token=1824dsf1u312asd14”

我使用上面作为我的请求URL并将我的数据写入流中,如下所示:

byte[] ByteQuery = Encoding.UTF8.GetBytes(post_body);
httpWebRequest.ContentLength = ByteQuery.Length;
Stream QueryStream = httpWebRequest.GetRequestStream();
QueryStream.Write(ByteQuery, 0, ByteQuery.Length);
QueryStream.Close();

这一切都很好,网页获取帖子数据没问题。问题是它返回如下错误:

{“stat”:“fail”,“diagnostics”:“0 2.6 25.22”,“error”:{“code”:6,“message”:“method(usermgmt.add)无法将application_id更改为(user) )当设置为(null-app)时,在同一请求中。“}}

所以我的问题是,如何处理向此页面发送帖子数据?必须设置application_id才能达到我想要的效果。我也试过通过RequestStream发送它无济于事。

我的帖子数据字符串如下所示:

方法= usermgmt.add&安培; uid_to_add = 5452007164&安培; api_signature =安培;跟踪= H40alhZWzp

我想要复制的请求: http://pastebin.com/c38Cq3AR

1 个答案:

答案 0 :(得分:0)

试试这个:

using System.IO;
using System.Net;
using System.Text;
using System.Collections.Specialized;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            var values = new NameValueCollection();
            values.Add("method", "usermgmt.add");
            values.Add("uid_to_add", "5452007164");
            values.Add("api_signature", "");
            values.Add("track", "H40alhZWzp");

            var wc = new WebClient();
            wc.Headers.Add(HttpRequestHeader.Cookie, "a=b&c=d");
            wc.Headers.Add(HttpRequestHeader.Referer, "http://www.tagged.com/meetme.html");

            var returnBytes = wc.UploadValues("http://domain.com/api/?application_id=user&format=json&session_token=1824dsf1u312asd14", values);
            var returnJson = Encoding.UTF8.GetString(returnBytes);
        }
    }
}

你还能得到同样的答案吗?

编辑:可能这里的cookie和/或推荐人数量?如果是这样,我已将它们添加到代码中......