我有以下經營合同的WCF服務:WCF HTTP GET參數會導致錯誤的請求
[OperationContract]
[WebGet(BodyStyle = WebMessageBodyStyle.Wrapped, RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, UriTemplate = "/VerifyKeys.json/{customerKey}/{userKey}")]
[return: MessageParameter(Name = "MyDetail")]
MyDetail VerifyKeys(string customerKey, string userKey);
我的方法是這樣的:
public MyDetail VerifyKeys(string customerKey, string userKey)
{
...
return _myDetail;
}
我的要求是這樣的:
http://mydomain.com/MyService.svc/web/VerifyKeys.json/FE3D0F1D-5B8B-4677-B332-70B7ABA80A97/08F4349A-30E5-457D-F2BD-70A23CE17F41?deviceId=66345ec6-a5fe-4b5f-8cf2-1b0d8c344dc2&deviceToken=AgTGERCBaS3d8n2QWxF9EtwcLktIoygoXpc8Y42ObZWja3RSjN%2bFBeshaY4ASainj3MusBbVopXbUFQrrgXUOSkAbOA7tChNKOFNKQ2gB8sEfCe5Du9BZufW4bAP5312MKRqV8g%3d&deviceType=Pink24
我有我的應用程序調用此方法的不同版本。我沒有創建新的方法,而是在最後使用了一個查詢字符串。通過解析url,我可以獲得我需要的附加參數。即。 deviceToken,deviceId,& deviceType
我的請求工作正常,而deviceToken參數較小。現在,向我提供設備令牌的公司已經做得非常大。現在我請求返回錯誤的請求400
AgTGERCBaS3d8n2QWxF9EtwcLktIoygoXpc8Y42ObZWja3RSjN%2bFBeshaY4ASainj3MusBbVopXbUFQrrgXUOSkAbOA7tChNKOFNKQ2gB8sEfCe5Du9BZufW4bAP5312MKRqV8g%3d
如果我從我的查詢字符串的結尾去掉這些字符,請求經過成功。 「Q2gB8sEfCe5Du9BZufW4bAP5312MKRqV8g%3d」
我已經做了一些研究,發現參數的最大值是255個字符。我的設備令牌只有140.
要增加我的困惑,如果我更改deviceId和deviceToken參數的順序,那麼我必須縮短deviceId參數才能成功發送。另一個值得關注的問題是,如果我嘗試縮短任何其他參數,那麼我的請求仍然失敗。我必須總是縮短第二個參數。
有沒有其他人有類似的問題,並找到了解決辦法?
如何通過路徑末尾的查詢字符串發送我的looong設備令牌?
這是一個好主意,但我的問題仍然存在。 – Robert