【问题标题】:UWP getting HTTP 301 in windows mobileUWP 在 Windows Mobile 中获取 HTTP 301
【发布时间】:2023-03-31 13:56:01
【问题描述】:

我有这个网址:

var url = "http://10.0.0.68/SET STB MEDIA CTRL {\"type\":\"tv\",\"action\":\"start query status\"}";
var newUri = new Uri(url);

这个 URI 的绝对路径是(From newUri):

 http://10.0.0.68/SET%20STB%20MEDIA%20CTRL%20%7B%22type%22:%22tv%22,%22action%22:%22start%20query%20status%22%7D

我安装了提琴手,当我进入浏览器这个网址时:

"http://10.0.0.68/SET STB MEDIA CTRL {"type":"tv","action":"start query status"}"

我可以看到,它被转换成这个网址:

 "http://10.0.0.68/SET%20STB%20MEDIA%20CTRL%20%7B%22type%22%3A%22tv%22%2C%22action%22%3A%22start%20query%20status%22%7D"

当我在 Windows 或手机模拟器上运行该应用程序时,一切正常,但在 Windows Mobile 上运行时 - 出现错误 (301),当我尝试在 Chrome/Firefox 中打开绝对路径时 - 出现同样的错误(301)

看来,在手机上运行时,字符串url转换错误,可以看到,绝对url和chrome/firefox的url是有区别的。问题是,这个字符 ":" 没有转换为 '3A'

正如我已经写过的,我只在手机上遇到这个问题。

 var client = new HttpClient();
 var url = "http://10.0.0.68/SET STB MEDIA CTRL {\"type\":\"tv\",\"action\":\"start query status\"}";
var uri = new Uri (url); //Just for debug
 var response = await client.GetAsync(url);
 var result = await response.Content.ReadAsStringAsync();

不管我使用 HttpClient 还是 WebView 控件 - 在 Windows Mobile 上 - 仍然是同样的错误 - 301

问题:

  1. 这是我的代码造成的还是 .NET 中的错误?
  2. 如果是我的错,我该如何解决?

好吧,我想了想,发现我不需要使用 HttpClient - 我创建了套接字客户端 - 根据微软教程

我通过这个客户端模拟网络浏览器,但只发送简短的请求:

var stringToSend =
            "GET /GET%20NOWORNEXT%20EPG%20%7B%20%22count%22%20%3A%20%2230%22%2C%20%22group%22%20%3A%20%225%22%2C%20%22epgNowOrNextFlag%22%20%3A%20%221%22%2C%20%22startIdx%22%20%3A%20%220%22%7D HTTP/1.1"

当我使用我从 PC 调试时,回复是正确的:

"HTTP/1.1 200 OK\r\nAccess-Control-Allow-Origin: *\r\nDate: Fri, 08 Jul 2016 14:20:31 GMT\r\nContent-Type: text/html\r\nConnection: Close\r\n\r\n200 {\"group\":5,\"count\":30,\"data\": etc.... "

但从 Windows Mobile 手机的结果是:

"HTTP/1.1 200 OK\r\nAccess-Control-Allow-Origin: *\r\nDate: Fri, 08 Jul 2016 15:42:01 GMT\r\nContent-Type: text/html\r\nConnection: Close\r\n\r\n301"

所以回复又是 301...

不可能……

【问题讨论】:

  • 如果您的网页跳转到其他网页,您可以在 HttpWebRequest 中使用AllowAutoRedirect = true。获取头部并获取网址
  • 不是问题,看第一条评论下划线..

标签: c# uri uwp


【解决方案1】:

好了,问题解决了! :)

它与 Windows Mobile 等无关...问题是,我必须第一次在连接到设备时打开他的 IP 地址 f.e.通过 webView 等。然后我的 IP 暂时存储在设备中并愿意与我通信。从 PC 上它正在工作,因为我正在调试请求等...

我在设备上运行 logcat 并检查通信时发现了它!

【讨论】:

    猜你喜欢
    • 2010-12-01
    • 1970-01-01
    • 2018-01-30
    • 2016-02-29
    • 2019-08-22
    • 1970-01-01
    • 2010-12-06
    • 2018-11-04
    • 2018-01-20
    相关资源
    最近更新 更多