当前位置: 首页 > 编程语言 > C#

C#中的用户认证分享

时间:2023-04-11 11:48:12 C#

C#中的用户认证我想在c#中执行如下cURL请求:curl-uadmin:geoserver-v-XPOST-H'Content-type:text/xml'-d'acme'http://localhost:8080/geoserver/rest/workspaces我试过使用WebRequest:stringurl="http://localhost:8080/geoserver/rest/workspaces";WebRequest请求=WebRequest.Create(url);request.ContentType="内容类型:文本/xml";request.Method="POST";request.Credentials=newNetworkCredential("admin","geoserver");byte[]buffer=Encoding.GetEncoding("UTF-8").GetBytes("my_workspace");流reqstr=request.GetRequestStream();reqstr.Write(buffer,0,buffer.Length);reqstr.Close();WebResponse响应=request.GetResponse();...但我收到错误消息:(400)错误请求。如果我更改请求凭据并在标头中添加身份验证:stringurl="http://localhost:8080/geoserver/rest/workspaces";WebRequest请求=WebRequest.Create(url);request.ContentType="内容类型:文本/xml";request.Method="POST";stringauthInfo="admin:geoserver";request.Headers["Authorization"]="Basic"+authInfo;byte[]buffer=Encoding.GetEncoding("UTF-8").GetBytes("my_workspace");流reqstr=request.GetRequestStream();reqstr.Write(buffer,0,buffer.Length);reqstr.Close();WebResponse响应=request.GetResponse();...然后我得到:(401)未经授权。我的问题是:我应该使用另一个C#类,如WebClient或HttpWebRequest,还是必须使用.NET的curl绑定?任何意见或指导将不胜感激。HTTP基本身份验证要求“基本”之后的所有内容都采用Base64编码,因此请尝试request.Headers["Authorization"]="Basic"+Convert.ToBase64String(Encoding.ASCII.GetBytes(authInfo));我的问题的解决方案是更改ContentType属性。如果我将ContentType更改为request.ContentType="text/xml";如果我还在最后一个示例中将authInfo转换为Base64String,就像AntonGogolev所建议的那样,请求在这两种情况下都有效。使用:request.ContentType="application/xml";request.Credentials=newNetworkCredential(GEOSERVER_USER,GEOSERVER_PASSWD);也有效。第二个设置身份验证信息。以上就是C#学习教程:在C#中使用C#进行用户认证分享的全部内容。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场,如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处: