如何用 HttpClient 对象调用或类似方法替换 curl 调用?
Posted
技术标签:
【中文标题】如何用 HttpClient 对象调用或类似方法替换 curl 调用?【英文标题】:How do I replace curl invoke with HttpClient object invoke or some similar? 【发布时间】: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
)。
【问题讨论】:
【参考方案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);
【讨论】:
以上是关于如何用 HttpClient 对象调用或类似方法替换 curl 调用?的主要内容,如果未能解决你的问题,请参考以下文章