【问题标题】:C# Get the content without the header from a POST requestC# 从 POST 请求中获取不带标头的内容
【发布时间】:2017-06-18 17:59:13
【问题描述】:

我的网站向我的程序发送了回复。这是它的样子:

POST /login.html/signup HTTP/1.1
Host: 192.168.1.75
Connection: keep-alive
Content-Length: 450
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36
Origin: http://192.168.1.75
Authorization: 1497742211491
Content-Type: text/plain; charset=UTF-8
Accept: */*
Referer: http://192.168.1.75/
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.8

%7B%22name%22%3A%22Adola%22%2C%22telp%22%3A%22%22%2C%22agen%22%3A%22pribadi%22%2C%22alamatagen%22%3A%22%22%2C%22hp%22%3A%22%22%2C%22email%22%3A%22Adola%40gmail.com%22%2C%22userid%22%3A%22ABCDEFG%22%2C%22password%22%3A%22123456%22%2C%22pcidses%22%3A%22ABCDEFG%22%2C%22pcidperm%22%3A%221497742211491%22%2C%22imgsrc%22%3A%22%22%2C%22capcode%22%3A%22dsiauh%22%2C%22ckperm%22%3A%22%22%2C%22cknw%22%3A%22%22%2C%22ckcd1%22%3A%22%22%2C%22ckcd2%22%3A%22%22%7D

这是一个 POST 请求,将一些用户数据从 Web 浏览器发送到程序。我的目标只是从上面获取 URI 编码的数据。目前我的低效方法是使用以下代码:

 string[] splitted = rawResponse.Split(new char[] { '\r', '\n' });
 //int result = 0;
 string aa = null;

 for (int i = 0; i < splitted.Length; i++)
 {
    if (splitted[i].Contains("%"))
    {
        aa = aa + splitted[i];
    }
 }

 string s = System.Uri.UnescapeDataString(aa);
 Console.WriteLine(s);

其中 rawResponse 就是上面的请求。打印出来的结果是这样的:

{"name":"Adola","telp":"","agen":"pribadi","alamatagen":"","hp":"","email":"Adola@gmail.com","userid":"ABCDEFG","password":"123456","pcidses":"ABCDEFG","pcidperm":"1497742211491","imgsrc":"","capcode":"dsiauh","ckperm":"","cknw":"","ckcd1":"","ckcd2":""}

问题是当请求标头(不是内容)包含“%”时,它会给我一个错误,例如。 GET /%USER%/12865。我如何有效地毫无问题地获取内容。谢谢!

【问题讨论】:

  • 如何将您的请求从您的网站发送到您的程序?你有什么样的程序?窗口应用程序?另一个网络应用程序?
  • 这是一个控制台应用程序。我正在使用Socket 类来发出请求。

标签: c# linq xmlhttprequest


【解决方案1】:

我建议你跳过标题,直接照顾身体。如果您的源对象不提供直接访问正文的方法,请使用此代码:

string[] splitted = rawResponse.Split(new char[] { '\r', '\n' });
string aa = null;
if (splitted[splitted.Length-1].Contains("%"))
{
    aa = aa + splitted[splitted.Length-1];
}

string s = System.Uri.UnescapeDataString(aa);
Console.WriteLine(s);

【讨论】:

  • 好的,现在说得通了。让我测试一下
  • 谢谢!即使在标题上使用%,它也能完美运行。
猜你喜欢
  • 1970-01-01
  • 2017-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-31
  • 1970-01-01
  • 1970-01-01
  • 2016-11-25
相关资源
最近更新 更多