2015-12-08 73 views
0

使用Unity3D和BestHttp插件,是否有更好的方式將查詢字符串附加到請求的URI,然後重建HTTP請求,如下所示?注意Unity是在mono 3.5的子集上運行的。將查詢字符串附加到預構建的URI(C#,Unity3D)

var str = _request.Uri.OriginalString; 

    str += "&page_number=0"; 

    _request = new HTTPRequest(new Uri(str)); 

編輯**

謝謝

我不認爲我是再清楚不過,雖然。問題不在於如何創建字符串,而在於如何將該頁碼附加到已經構建/配置的請求,而不必重新構建完整的HTTP請求並設置其所有回調和其他值。 httpRequest URI的集Accessor不可訪問。

+0

更新了我的答案,以獲取關於爲什麼Uri屬性爲只讀的更多說明。 – Ben

回答

1

爲您編輯: 的URI屬性爲讀 - 僅僅是因爲通過向第三方服務器公開cookies,形式數據和其他潛在的敏感信息來向自己發出警告是很容易的。 爲了避免這種情況,該插件不會讓你重用不同的Uri相同的請求。


我認爲你能做的最好是使用UriBuilder類:「?」

UriBuilder builder = new UriBuilder(req.CurrentUri); 
builder.Query += "page_number=0"; 
Debug.Log(builder.Uri); 

這將增加第一char,但是對於Unity中的當前實現,如果多次使用+ =運算符,它會添加多個「?」字符:

UriBuilder builder = new UriBuilder(req.CurrentUri); 
builder.Query += "page_number=0"; 
builder.Query += "&page_number=2"; 
builder.Query += "&page_number=4"; 

Debug.Log(builder.Uri); 

這將產生一個輸出這樣的:

http://httpbin.org/get???page_number=0&page_number=2&page_number=4

所以,你可以用這些限制的鬥爭,或者你可以用你的原始字符串的方法堅守。

+0

感謝您的更新 – CostelloNicho

1

我找到有用的Flurl庫https://github.com/tmenier/Flurl這只是擴展的簡單集合,幫助您構建URL字符串中開始

爲例,在方案中,它會像

var str = _request.Uri.OriginalString.SetQueryParams("page_number", "0"); 

它有一個流利的API,所以它很容易在該項目的主頁上建立url 有一個例子說話本身

var result = await "https://api.mysite.com" 
.AppendPathSegment("person") 
.SetQueryParams(new { api_key = "xyz" }) 
.WithOAuthBearerToken("my_oauth_token") 
.PostJsonAsync(new { first_name = firstName, last_name = lastName }) 
.ReceiveJson<T>(); 

的例子做得更多,你需要什麼,因爲它已經發布的東西,讀取響應,所以你可以使用擴展構建路徑和查詢字符串