2016-07-07 63 views
1

我有這個網址: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

問題:

  1. 這是導致我的代碼,或者是一個在.NET中的錯誤?
  2. 如果是我的錯,我該如何解決?

以及我鑫卡特關於這一點,我發現,我並不需要使用的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 ...

不可能....

+0

如果您的網頁跳轉到其他網頁,您可以在HttpWebRequest中使用'AllowAutoRedirect = true'獲取網址並獲得網址 – lindexi

+0

這不是問題,請看下面的第一條評論。 – petrtim

回答

0

好了,問題解決了! :)

它與Windows Mobile等沒有什麼......問題是,我必須第一次,當連接到設備打開他的IP地址f.e.通過webView等..然後我的IP暫時存儲在設備中,並願意與我交流..從PC它工作,因爲我正在調試請求等...

我發現它,當我在設備上運行logcat並檢查通信!