【发布时间】:2010-07-15 17:04:08
【问题描述】:
IBM RTC RESTful api 提供了一个用于向服务器进行身份验证的 shell 脚本示例:
COOKIES=./cookies.txt
USER=my_user
PASSWORD=my_password
HOST="https://myJazzServer:9092/jazz"
curl -k -c $COOKIES "$HOST/authenticated/identity"
curl -k -L -b $COOKIES -c $COOKIES -d j_username=$USER -d j_password=$PASSWORD "$HOST/authenticated/j_security_check"
这很好用,但是我需要使用 c# 向服务器进行身份验证。
到目前为止,我有以下内容,但它不起作用(返回授权失败页面):
CookieContainer _cookie;
public string _RTC()
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://myJazzServer.com:9092/jazz/authenticated/identity");
if (_cookie == null)
{
_cookie = new CookieContainer();
}
string a;
request.CookieContainer = _cookie;
using (var response = request.GetResponse())
{
using (StreamReader sr = new StreamReader(response.GetResponseStream()))
{
a = sr.ReadToEnd();
}
}
byte[] data = (new ASCIIEncoding()).GetBytes("j_username=myUser&j_password=MyPass");
request = (HttpWebRequest)WebRequest.Create("https://myJazzServer.com:9092/jazz/authenticated/j_security_check");
request.Method = "POST";
request.ContentType = "text/html";
request.ContentLength = data.Length;
request.CookieContainer = _cookie;
Stream reqStream = request.GetRequestStream();
reqStream.Write(data,0,data.Length);
string b;
using (var response = request.GetResponse())
{
using (var reader = new StreamReader(response.GetResponseStream()))
{
b = reader.ReadToEnd();
}
}
}
【问题讨论】:
-
您能否更具体地说明什么是“不工作”?您是否收到异常、响应中没有内容、响应中出现意外的 http 状态代码(例如 404、407 等)等?
-
@Nathan,它正在返回一个授权失败的页面,我无法提供详细信息,因为它返回的是一个 ajax 引导程序,其方法名为 authFailed(或类似的方法),所以我不能获取实际详细信息。
标签: c# post curl httpwebrequest jazz