我必须从wpf应用程序调用外部休息服务。我对这项服务没有任何控制权。当我使用休息客户端(例如Postman)向服务发出请求时,它工作正常,即返回成功。对此网址进行了一次邮寄调用:
http://mydomain.com:38080/workshop/rest/login?username=usr&password=pwd
您可以看到我必须在查询字符串中传递用户名和密码。
但是当我从我的应用程序执行相同操作时,服务返回失败。这是我的代码:
string EndPoint = "http://mydomain.com:38080/workshop/";
string parameters = "username=usr&password=pwd";
CookieContainer cookies = new CookieContainer();
HttpClientHandler handler = new HttpClientHandler();
handler.CookieContainer = cookies;
HttpClient client = new HttpClient(handler);
client.BaseAddress = new Uri(EndPoint);
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage response = client.PostAsync("rest/login", new StringContent(parameters)).Result;
Task task = response.Content.ReadAsStreamAsync().ContinueWith(t =>
{
var stream = t.Result;
using (var reader = new StreamReader(stream))
{
responseValue = reader.ReadToEnd();
}
});
task.Wait();
似乎服务期望查询字符串中的参数,而我的代码在请求标头中传递它们。那么如何在post调用中传递querystring中的参数呢?