【问题标题】:Equivalent of Python code in C#?等价于 C# 中的 Python 代码?
【发布时间】:2012-04-05 16:33:12
【问题描述】:

因为我不懂 Python,所以我必须真正问这个问题。 以下是取自this 地方的几行代码。如果有人指导我将以下内容翻译成 C#,我将不胜感激

#Step 1: Get a session key
servercontent = myhttp.request(baseurl + '/services/auth/login', 'POST',
                            headers={}, body=urllib.urlencode({'username':username, 'password':password}))[1]
sessionkey = minidom.parseString(servercontent).getElementsByTagName('sessionKey')[0].childNodes[0].nodeValue
print "====>sessionkey:  %s  <====" % sessionkey

【问题讨论】:

    标签: c# python converter


    【解决方案1】:

    我无法将它翻译成 C#,但我可以解释这段代码的作用:

    1. 使用提供的用户名和密码登录baseurl + '/services/auth/login'
    2. 读取该 URL 的内容。
    3. 解析第一个&lt;sessionkey&gt;标签的内容,并读取其第一个子节点的值。

    【讨论】:

    • 我认为这对于了解 C# 的人来说已经足够了,因为他们现在应该能够编写等效的代码。不明白为什么实际上写出 C# 甚至是必要的。 +1
    【解决方案2】:

    这是一个快速的脏翻译:

    using System.Linq.Xml;
    using System.Net;
    using System.Collections.Generic;
    using System.Web;
    
    // ...
    var client = new WebClient();
    var parameters = new Dictionary<string, string> 
    { 
      { "username", username },
      { "password", password }
    };
    
    var result = client.UploadString(String.Format("{0}/services/auth/login", BaseUrl), UrlEncode(parameters));
    var doc = XDocument.Load(result);  // load response into XML document (LINQ)
    var key = doc.Elements("sessionKey").Single().Value // get the one-and-only <sessionKey> element.
    Console.WriteLine("====>sessionkey:  {0}  <====", key);
    // ...
    
    // Utility function: 
    private static string UrlEncode(IDictionary<string, string> parameters)
    {
      var sb = new StringBuilder();
      foreach(var val in parameters) 
      {
        // add each parameter to the query string, url-encoding the value.
        sb.AppendFormat("{0}={1}&", val.Key, HttpUtility.UrlEncode(val.Value));
      }
      sb.Remove(sb.Length - 1, 1); // remove last '&'
      return sb.ToString();
    }
    

    此代码检查响应是否只有一个 sessionKey 元素,否则如果有 0 或大于 1 则会抛出异常。然后将其打印出来。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-27
      • 2012-05-11
      • 2011-11-25
      • 2011-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-08
      相关资源
      最近更新 更多