我正在使用 JsonServiceClient 客户端与外部供应商托管在 IIS 7 上的 RESTful 服务进行通信。
这是我用来调用他们的 Get 方法的一些示例代码。
ServiceStack.ServiceClient.Web.JsonServiceClient client = new ServiceStack.ServiceClient.Web.JsonServiceClient("UrlToVendor"));
client.SetCredentials("userName", "password");
client.AlwaysSendBasicAuthHeader = true;
DTOReturn result = client.Get<DTOReturn>(string.Empty);
我总是遇到授权失败。我们放置了一个嗅探器,并且 Authorization 标头被发送为:
基本用户名:密码
代替
基本用户名:密码
我们能够使用标准的 .Net 调用来让它工作
System.Net.HttpWebRequest req = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(
"UrlToVendor");
string authInfo = "userName:password";
authInfo = Convert.ToBase64String(Encoding.Default.GetBytes(authInfo));
req.Accept = "application/json"; //text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
req.PreAuthenticate = true;
req.Method = "GET";
req.Headers["Authorization"] = string.Format("Basic {0}", authInfo);
System.Net.HttpWebResponse res = (System.Net.HttpWebResponse)req.GetResponse();
如果我们将“Basic”更改为“basic”,这些标准调用与 JasonServiceClient 相同。有什么建议么?