我有一段php的代码示例,需要翻译到C#,我自己翻译后,服务器始终提示401 未经验证,我对php不熟悉
各位请看一下我翻译的是否正确,这些curl中的参数意思我不是很明白。非常感谢!。   //Connection Resource
   $resource_uri = 'https://app.test.com/test.xml'
  
   //Setup connection
   $curl = curl_init();
   curl_setopt($curl, CURLOPT_URL, $resource_uri);
   curl_setopt($curl, CURLOPT_HEADER, 0);
   curl_setopt($curl, CURLOPT_USERPWD, $username . ":" . $password);
   curl_setopt($curl, CURLOPT_TIMEOUT, 15);
   curl_setopt($curl, CURLOPT_VERBOSE, 0);
   curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
   curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 1);
   curl_setopt($curl, CURLOPT_FAILONERROR, 0);
  
   //Send request
   $result_json = curl_exec($curl);
   curl_close($curl);
     
   //Done
   print_r($result_json);
     我写的c#代码
   private bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)
   {
   return true;
   }
   protected void Page_Load(object sender, EventArgs e)
   {
   string uri = "https://app.test.com/test.xml";   ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(CheckValidationResult);
   HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
   request.Method = "GET";
   NetworkCredential credential = new NetworkCredential(username, password);
   request.Credentials = credential;   HttpWebResponse response = null;
   try
   {
   response = (HttpWebResponse)request.GetResponse();
   }
   catch (Exception ex)
   {
   if (response != null)
   {
   response.Close();
   response = null;
   }
   Response.Write(ex.Message);
   return;
   }

解决方案 »

  1.   

    你这不是移植,是重写了
    c# 也有 curl 为什么不用呢
    HttpWebRequest 的工作机制与 curl 是不同的,虽然表现差不多
      

  2.   

    谢谢,我想无论curl,httwebrequest最终都是通过http协议来完成的,所以,curl能完成的,HttpWebRequest应该也是能完成的。我google了一整天都没有找到原因,但根据你的回答却google到问题所在,仍然是通过HttpWebRequest完成的。世界就是这么奇妙!