C#异步请求Hotmail的问题
参考了网上的资料,自己写了一段异步连接Hotmail的代码,调试中,总发现401错误(未经授权),全部代码如下:
public class HotmailProxy
{
private ManualResetEvent _allDone;//异步操作是否完成
private const int _timeOut = 30 * 1000;//30秒超时
private string _request;//请求字符串
private string _requestMethod;//请求方法
private Uri _destination;//目的地
private NetworkCredential _credential;//包含用户名/密码
private CookieContainer ckContainer;//包含Cookie的容器
//----------------------入口,调用该方法报401错误---------------------------------------------
public string Connect(string username, string password)
{
//HotMail入口
string hotmailEntryPoint = "http://services.msn.com/svcs/hotmail/httpmail.asp ";
Uri des = new Uri(hotmailEntryPoint);
hHttp = new HotmailProxy(username, password);
//获取根文件夹查询
string query = " ";
query += " <?xml version= '1.0 '?> ";
query += " <D:propfind xmlns:D= 'DAV: ' xmlns:h= 'http://schemas.microsoft.com/hotmail/ ' xmlns:hm= 'urn:schemas:httpmail: '> ";
query += " <D:prop> ";
query += " <hm:msgfolderroot/> ";
query += " </D:prop> ";
query += " </D:propfind> ";
string response = hHttp.AsyncSendRequest(query, "PROPFIND ", des);
// 验证响应
if (response == null || response.Trim().Length == 0)
throw new ApplicationException( "No response received from host. ");
return response;
}
public HotmailProxy(string userName, string password)
{
_credential = new NetworkCredential(userName, password);
_allDone = new ManualResetEvent(false);
ckContainer = new CookieContainer();
}
public string AsyncSendRequest(string request, string method, Uri destination)
{
return this.AsyncSendRequest(request, method, destination, _credential);
}
private string AsyncSendRequest(string req