凭据正确时无法连接 HttpClient
Trouble connecting with HttpClient when credentials are correct
我知道我可以连接到端点(使用 Postman chrome 应用程序),但是当我尝试通过在 Azure 上作为 WebJob 执行的 HttpClient 尝试时,我收到了身份验证错误。
public string ScanEndPoint()
{
string result;
using (var client = new HttpClient())
{
var requestContent = new MultipartFormDataContent();
var url = $"{Host}/{Path}";
requestContent.Add(new StringContent("*"), Version);
requestContent.Add(new StringContent("***"), Reference);
requestContent.Add(new StringContent("********"), Password);
var response = client.PostAsync(url, requestContent).Result;
result = response.Content.ReadAsStringAsync().Result;
}
return result;
}
MultipartFormData 是因为我必须 post body 而不是 headers 中的凭据。在Postman中点击代码link显示:
POST /*************.php HTTP/1.1
Host: *****-*******.****.******
Cache-Control: no-cache
Postman-Token: b574e803-1873-d7dd-ff10-bfc509991342
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW
------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="*"
**
------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="***"
****
------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="*********"
********************************
------WebKitFormBoundary7MA4YWxkTrZu0gW--
我需要采取什么步骤来复制那个 postman 请求以便它在代码中工作?
这是我们必须做的才能让它工作:
using (var client = new HttpClient(handler: clientHandler, disposeHandler: true))
{
client.BaseAddress = new Uri(Host);
var url = $"{Path}";
var parameters = new Dictionary<string, string> {
{ "V", Version },
{ "ref", Reference },
{ "password", Password }
};
var encodedContent = new FormUrlEncodedContent(parameters);
var response = client.PostAsync(url, encodedContent).Result;
result = response.Content.ReadAsStringAsync().Result;
}
return result;
处理程序为本地调试设置了一个代理,这在 Azure 上应该是无关紧要的,但如果证明是错误的,我可以将其删除。
我读到的大多数关于此的帖子都建议采用与@Jayendran 所指相同的方法。关于差异可能是什么的任何想法?
注意:我们还必须重新安排主机和路径,以便主机以“/”结尾
我知道我可以连接到端点(使用 Postman chrome 应用程序),但是当我尝试通过在 Azure 上作为 WebJob 执行的 HttpClient 尝试时,我收到了身份验证错误。
public string ScanEndPoint()
{
string result;
using (var client = new HttpClient())
{
var requestContent = new MultipartFormDataContent();
var url = $"{Host}/{Path}";
requestContent.Add(new StringContent("*"), Version);
requestContent.Add(new StringContent("***"), Reference);
requestContent.Add(new StringContent("********"), Password);
var response = client.PostAsync(url, requestContent).Result;
result = response.Content.ReadAsStringAsync().Result;
}
return result;
}
MultipartFormData 是因为我必须 post body 而不是 headers 中的凭据。在Postman中点击代码link显示:
POST /*************.php HTTP/1.1
Host: *****-*******.****.******
Cache-Control: no-cache
Postman-Token: b574e803-1873-d7dd-ff10-bfc509991342
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW
------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="*"
**
------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="***"
****
------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="*********"
********************************
------WebKitFormBoundary7MA4YWxkTrZu0gW--
我需要采取什么步骤来复制那个 postman 请求以便它在代码中工作?
这是我们必须做的才能让它工作:
using (var client = new HttpClient(handler: clientHandler, disposeHandler: true))
{
client.BaseAddress = new Uri(Host);
var url = $"{Path}";
var parameters = new Dictionary<string, string> {
{ "V", Version },
{ "ref", Reference },
{ "password", Password }
};
var encodedContent = new FormUrlEncodedContent(parameters);
var response = client.PostAsync(url, encodedContent).Result;
result = response.Content.ReadAsStringAsync().Result;
}
return result;
处理程序为本地调试设置了一个代理,这在 Azure 上应该是无关紧要的,但如果证明是错误的,我可以将其删除。
我读到的大多数关于此的帖子都建议采用与@Jayendran 所指相同的方法。关于差异可能是什么的任何想法?
注意:我们还必须重新安排主机和路径,以便主机以“/”结尾