我有這個網址:UWP得到HTTP 301在移動窗口
var url = "http://10.0.0.68/SET STB MEDIA CTRL {\"type\":\"tv\",\"action\":\"start query status\"}";
var newUri = new Uri(url);
此URI的
絕對路徑(從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
問題:
- 這是導致我的代碼,或者是一個在.NET中的錯誤?
- 如果是我的錯,我該如何解決?
以及我鑫卡特關於這一點,我發現,我並不需要使用的HttpClient - 我創建的套接字客戶端 - 根據微軟教程
我通過這個客戶端模擬Web瀏覽器,但僅發送短請求:
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'獲取網址並獲得網址 – lindexi
這不是問題,請看下面的第一條評論。 – petrtim