在紧凑的框架中POST HttpWebRequest

时间:2018-03-05 23:13:39

标签: c# compact-framework windows-ce motorola-emdk system.net.httpwebrequest

我在紧凑的框架中开发应用程序,需要将POST发送给服务器

    public SResponse SaveDoc(Document document)
    {
        var url = WorkSettings.URL + "savedoc/" + document.DocType + "/" + document.DocNumber;
        string json = JsonConvert.SerializeObject(document);

        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
        request.KeepAlive = false;
        request.ProtocolVersion = HttpVersion.Version10;
        request.Method = "POST";

        // turn our request string into a byte stream
        byte[] postBytes;

        if (json != null)
        {
            postBytes = Encoding.UTF8.GetBytes(json);
        }
        else
        {
            postBytes = new byte[0];
        }

        request.ContentType = "application/x-www-form-urlencoded";
        request.ContentLength = postBytes.Length;

        Stream requestStream = request.GetRequestStream();

        // now send it
        requestStream.Write(postBytes, 0, postBytes.Length);
        requestStream.Close();

        HttpWebResponse response;

        response = (HttpWebResponse)request.GetResponse();

        return GetResponseData(response);

    }

异常错误

  

此请求需要缓冲数据以进行身份​​验证或重定向才能成功。

1 个答案:

答案 0 :(得分:1)

我自己更熟悉HttpClient并且从未使用过HttpWebRequest,但我收到的任何与重定向相关的错误都可以通过确保您的网址完全正确来快速解决。

var url = WorkSettings.URL + "savedoc/" + document.DocType + "/" + document.DocNumber

确保您上面的网址正是您要保存到的网址。也许你已经添加了额外的" /"在发生错误的URL中?或许你需要追加" .php"或" .html"到你的网址的末尾。

如果您无法调试代码以逐步查看此确切的URL,则还可以在发生重定向请求时使用Wireshark或Fiddler视图。

需要考虑的其他问题:

1)如果您发送错误的网址,是否要进行自动重定向?可能,但也许不是。如果没有,那么值得指出的是,HttpWebRequest的AutoRedirect property默认设置为true。

2)你想具体处理这个错误吗?或者错误不是由于URL略微不正确造成的。如果是这样,我在处理此错误方面没有太多个人经验。也许this StackOverflow post有一个非常简单的解决方案可以解决问题。