c# - 如何使用方法 post 使用 HttpRequest 发送变量?

标签 c# httpwebrequest http-headers microsoft-metro

首先,检查我正在尝试执行的此消息:

Login

To log on to Windows8 service is through the URL: http://app.proceso.com.mx/win8/login

This URL HTTP Request Method receives POST variables user and pass. The variable user is the user's email and pass the variable is the same password. In the event that the user or password are invalid return plain text number zero 0, in the opposite case, that the username and password are valid return plain text an alphanumeric string of 32 characters, as this b17f27a16589fee247c666da6ed15569, this string is the hash of the valid user valid and will run from 00:00 hours to 23:59 hours the day it was generated.

To test the URL was created: http://app.proceso.com.mx/win8/login_test 

Note: It should be clear that the hash generated will only be valid for Windows8 service to the user that gender and the effect from 00:00 hours to 23:59 on the day it was generated.

Note: All services generate text in UTF-8

这是一个测试帐户:

那么,如果你在这个页面设置了数据:http://app.proceso.com.mx/win8/login_test您将收到一个哈希码。

这就是我试图在 metro 应用程序中实现的目标,但我在这种情况下感到迷失。我不知道发送这些数据来接收哈希码。我正在使用 HttpClient 和 HttpContent,但我不确定。

提前致谢。

更新:感谢 dharnitski 提供的代码,现在我正在为 Win8 CP 修改此代码:

        // this is what we are sending
        string post_data = "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="89fcfaecfbb4e3e8ffe0ecfba7e5e6f9ecf3a7eae6e7fdfbecfbe8fab8b9c9eee4e8e0e5a7eae6e4" rel="noreferrer noopener nofollow">[email protected]</a>&pass=policarpio20";

        // this is where we will send it
        string uri = "http://app.proceso.com.mx/win8/login";

        // create a request
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
        request.Method = "POST";

        // turn our request string into a byte stream
        byte[] postBytes = Encoding.UTF8.GetBytes(post_data);

        // this is important - make sure you specify type this way
        request.ContentType = "application/x-www-form-urlencoded";
        Stream requestStream = await request.GetRequestStreamAsync();

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

        // grab te response and print it out to the console along with the status code
        WebResponse response = await request.GetResponseAsync();
        //var a = new StreamReader(response.GetResponseStream()).ReadToEnd();
        StreamReader requestReader = new StreamReader(response.GetResponseStream());
        String webResponse = requestReader.ReadToEnd();

我意识到,HttpWebRequest 不包含 ProtocolVersion 并且在这一行中向我抛出此错误:

WebResponse response = await request.GetResponseAsync();
// ERROR: The remote server returned an error: (417) Expectation Failed.

如果可以修改协议(protocol)版本,如何解决这个问题?

最佳答案

这是用 C# 实现 HTTP POST 的示例代码

http://www.terminally-incoherent.com/blog/2008/05/05/send-a-https-post-request-with-c/

重要提示:您必须将网页切换为 HTTPS (SSL)。发送未加密的密码是非常不好的做法。

关于c# - 如何使用方法 post 使用 HttpRequest 发送变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10973734/

相关文章:

c# - 为我所有的表单设置相同的图标

c# - 使用正则表达式匹配零

http - 如何在 HTTP 重定向上转发 header

iis - 如何在 HttpWebRequest.BeginGetResponse 上指定超时值而不阻塞线程

c# - 将 JSON curl 转换为 C#

Java CXF WS 客户端 - gZip HTTP REQUEST HEADER 被忽略

javascript - 如何在 xhr 对象上设置 getAllResponseHeaders()

c# - C# 是否会受益于枚举器种类之间的区别,例如 C++ 迭代器?

c# - 如何在Page_Unload中检测到未处理的异常已经发生?

java - 如何让 App Engine/Java 应用程序在来自 Java/Python 网络 cron 的无效请求下运行?