C# 调用web api时出现问题。始终返回500服务器错误
我正在发出一个HttpWeb请求,POST调用url/api,并对用户名和密码进行基本身份验证。当我使用POSTMAN工具时,它会给出响应。但不确定.net代码为什么会给我内部服务器错误。我正在尝试以下操作: 注意:交换数据必须是XML格式。因此我提供了text/XMLC# 调用web api时出现问题。始终返回500服务器错误,c#,api,authentication,asp.net-web-api,C#,Api,Authentication,Asp.net Web Api,我正在发出一个HttpWeb请求,POST调用url/api,并对用户名和密码进行基本身份验证。当我使用POSTMAN工具时,它会给出响应。但不确定.net代码为什么会给我内部服务器错误。我正在尝试以下操作: 注意:交换数据必须是XML格式。因此我提供了text/XML var requestXml = new XElement("transaction", new XElement("transactionId", "Dummy")); HttpWebReque
var requestXml = new XElement("transaction", new XElement("transactionId", "Dummy"));
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
byte[] bytes;
bytes = System.Text.Encoding.ASCII.GetBytes(XMLSerializer(requestXml));
request.ContentType = "text/xml; encoding=utf-8";
request.ContentLength = bytes.Length;
request.Method = "POST";
request.Headers.Add(HttpRequestHeader.Authorization, "Basic" + Convert.ToBase64String(System.Text.ASCIIEncoding.ASCII.GetBytes("username:password")));
Stream requestStream = request.GetRequestStream();
requestStream.Write(bytes, 0, bytes.Length);
requestStream.Close();
HttpWebResponse response;
response = (HttpWebResponse)request.GetResponse();
if (response.StatusCode == HttpStatusCode.OK)
{
Stream responseStream = response.GetResponseStream();
string responseStr = new StreamReader(responseStream).ReadToEnd();
return responseStr;
}
授权标头应设置为:
"Basic " + Convert.ToBase64String(System.Text.ASCIIEncoding.ASCII.GetBytes("username:password")));
而不是
"Basic" + Convert.ToBase64String(System.Text.ASCIIEncoding.ASCII.GetBytes("username:password")));
请注意Basic后面的额外空格字符。尝试在Basic后面添加空格,即Basic在服务器端签出错误。并使用类似fiddler的东西将原始.net请求与邮递员请求进行比较