【问题标题】:How do I replace curl invoke with HttpClient object invoke or some similar?如何用 HttpClient 对象调用或类似方法替换 curl 调用?
【发布时间】:2013-10-23 03:18:02
【问题描述】:

有一个代码可以在 geoserver 上创建新的 featureType:

string par = @"/c D:\curl-7.32.0-ssl-sspi-zlib-static-bin-w32\curl.exe -v -u admin:MYPASSWORD -XPOST -H ""Content-type: text/xml"" -d ""<featureType><name>" + name + @"</name><title>" + MyHtmlEncode(title) + @"</title></featureType>""  http://localhost:8080/geoserver/rest/workspaces/cite/datastores/postgis/featuretypes";
Process P = Process.Start(@"C:\Windows\System32\cmd.exe",par);

我想读取服务器的输出并处理错误,他们说我应该用HttpClient 替换 curl,但我不知道如何描述授权 (-u admin:MYPASSWORD)。

【问题讨论】:

    标签: c# curl geoserver dotnet-httpclient


    【解决方案1】:

    它看起来像基本身份验证,所以应该这样做。

            var httpClient = new HttpClient();
            var authHeader = new AuthenticationHeaderValue("basic", Convert.ToBase64String(Encoding.ASCII.GetBytes("admin:MYPASSWORD")));
            httpClient.DefaultRequestHeaders.Authorization = authHeader;
    
            var content = new StringContent("<featureType><name>" + name + @"</name><title>"  + MyHtmlEncode(title) + @"</title></featureType>" );
            content.Headers.ContentType = new MediaTypeHeaderValue("text/xml");
            var response = await httpClient.PostAsync("http://localhost:8080/geoserver/rest/workspaces/cite/datastores/postgis/featuretypes", content);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-12-27
      • 2012-05-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-08
      • 1970-01-01
      相关资源
      最近更新 更多