WebClient在调用UploadString()

时间:2018-06-07 12:53:58

标签: c#

我必须处理来自API的JSON数据(在我的Windows应用程序中),我正在尝试使用WebClient.UploadString()进行POST请求; 下面是我的代码,但它的抛出错误,我尝试了各种选项,但无法将JSON复制为字符串。

string result = "";
        string url = "https://30prnabicq-dsn.algolia.net/1/indexes/*/queries?x-algolia-agent=Algolia for vanilla JavaScript (lite) 3.24.12;JS Helper 2.24.0;vue-instantsearch 1.5.0&x-algolia-application-id=30PRNABICQ&x-algolia-api-key=dcccebe87b846b64f545bf63f989c2b1";
        string json = "{\"requests\":[{\"indexName\":\"vacatures\",\"params\":\"query=&hitsPerPage=20&page=0&highlightPreTag=__ais-highlight__&highlightPostTag=__/ais-highlight__&facets=[\"category\",\"contract\",\"experienceNeeded\",\"region\"]&tagFilters=\"}]}";

        using (var client = new WebClient())
        {
            client.Headers[HttpRequestHeader.Host] = "30prnabicq-dsn.algolia.net";
            client.Headers[HttpRequestHeader.UserAgent] = "Mozilla/5.0 (Windows NT 6.3; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0"; 
            client.Headers[HttpRequestHeader.Accept] = "application/json"; 
            client.Headers[HttpRequestHeader.AcceptLanguage] = "en-US,en;q=0.5"; 
            client.Headers[HttpRequestHeader.AcceptEncoding] = "gzip, deflate, br"; 
            client.Headers[HttpRequestHeader.Referer] = "https://bouwjobs.be/";
            client.Headers[HttpRequestHeader.ContentType] = "application/json"; 
            client.Headers[HttpRequestHeader.ContentLength] = "249"; 
            client.Headers[HttpRequestHeader.Origin] = "https://bouwjobs.be"; 
            client.Headers[HttpRequestHeader.Connection] = "keep-alive";
            client.Headers[HttpRequestHeader.Cache - Control] = "max-age=0";

            result = client.UploadString(url, "POST", json);
            return result;
        }

请指导我纠正我的代码。

  

注意 - 我的代码中包含了一些受限制的标题,但即使在评论出来之后它也会抛出错误。

1 个答案:

答案 0 :(得分:0)

您似乎没有使用WebClient上传有效的Json。内部数组facet中的双引号表示查询参数已结束。删除它的引号。

string json = "{\"requests\":[{\"indexName\":\"vacatures\",\"paras\":\"query=&hitsPerPage=20&page=0&highlightPreTag=__ais-highlight__&highlightPostTag=__/ais-highlight__&facets=[category,contract,experienceNeeded,region]&tagFilters=\"}]}";

这是有效的json,应该可以正常工作。