繁体   English   中英

等价于C#中的Python代码?

[英]Equivalent of Python code in C#?

我真的要问这个问题,因为我不了解Python。 以下是从这个地方摘录的几行内容。 如果有人指导我将以下内容翻译成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#,但是我可以解释这段代码的作用:

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

这是一个快速的n脏翻译:

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,它将引发异常。然后将其打印出来。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM