首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有摘要身份验证的HttpClient post请求会导致错误请求

带有摘要身份验证的HttpClient post请求会导致错误请求
EN

Stack Overflow用户
提问于 2021-10-25 11:17:53
回答 1查看 218关注 0票数 0

我使用以下代码从大华XVR相机中提取记录,并成功地返回记录。

代码语言:javascript
复制
        var domain = "http://IP";
        var credCache = new CredentialCache();
        credCache.Add(new Uri(domain), "Digest", new 
        NetworkCredential(username, password));
        var httpClient = new HttpClient(new HttpClientHandler { 
        Credentials = credCache });
        var result= await httpClient.GetStringAsync(new Uri(URL));   

但是,当我使用下面的代码发布记录时,它不起作用,并导致一个错误的请求。

代码语言:javascript
复制
        string url = "http://IP/cgi-bin/faceRecognitionServer.cgi";

        var postData = new List<KeyValuePair<string, string>>()
        {
        new KeyValuePair<string, string>( "action", "addPerson"),
        new KeyValuePair<string, string>("groupID", "1"),
        new KeyValuePair<string, string>("name", "Test Name"),
        new KeyValuePair<string, string>("birthday", "1980-01-05"),
        new KeyValuePair<string, string>("sex", "Male"),
        new KeyValuePair<string, string>("country", "Pakistan"),
        new KeyValuePair<string, string>("province", "KPK"),
        new KeyValuePair<string, string>("city", "Peshawar")
        };
        var content = new FormUrlEncodedContent(postData);

        var domain = "http://IP";
        var credCache = new CredentialCache();
        credCache.Add(new Uri(domain), "Digest", new NetworkCredential(username, password));
        var httpClient = new HttpClient(new HttpClientHandler { Credentials = credCache });
        var result = await httpClient.PostAsync(new Uri(url), content);

以上代码总是返回400个错误请求。如果有人能帮忙呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-29 06:42:19

我把这个问题解决如下。也许能帮上忙。

  1. 缩小了我必须嵌入到请求体中的图像的大小。

  1. 将URL和参数连接在一个字符串中。

字符串url =“action=addPerson&groupID=1&name=TestName&sex=Male";字符串域= "http://IP";CredentialCache credCache =新CredentialCache {新Uri(域)、"Digest”、新NetworkCredential(用户名、密码)} };使用HttpClient client =新HttpClient(新HttpClientHandler {凭据= credCache });使用FileStream流= File.OpenRead(AppContext.BaseDirectory )。替换(“\bin\Debug\netcoreapp3.1”、“)+ "Files\14.jpg");var file_content =新的ByteArrayContent(新的ByteArrayContent=新的MediaTypeHeaderValue("image/jpeg");var response =等候client.PostAsync(url,file_content); )

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69707109

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档