【发布时间】:2010-03-07 18:42:54
【问题描述】:
现在我一直在尝试使用 Launchpad's API 使用 C#.NET 或 Mono 编写一个小的包装器。
根据OAuth,我首先需要签署请求和Launchpad has it's own way of doing so。
我需要做的是使用一些必要的 HTTP 标头(例如 Content-type)创建到 https://edge.launchpad.net/+request-token 的连接。在 python 中,我有 urllib2,但是当我浏览 System.Net 命名空间时,它让我大吃一惊。我无法理解如何开始。我是否可以使用WebRequest、HttpWebRequest 或WebClient,有很多困惑。使用 WebClient 我什至会收到证书错误,因为它们没有被添加为受信任的。
来自 API Docs,它说三个密钥需要通过 POST 发送
- auth_consumer_key:您的消费者密钥
- oauth_signature_method:字符串“PLAINTEXT”
- oauth_signature:字符串“&”。
所以 HTTP 请求可能如下所示:
POST /+request-token HTTP/1.1
Host: edge.launchpad.net
Content-type: application/x-www-form-urlencoded
oauth_consumer_key=just+testing&oauth_signature_method=PLAINTEXT&oauth_signature=%26
响应应如下所示:
200 OK
oauth_token=9kDgVhXlcVn52HGgCWxq&oauth_token_secret=jMth55Zn3pbkPGNht450XHNcHVGTJm9Cqf5ww5HlfxfhEEPKFflMqCXHNVWnj2sWgdPjqDJNRDFlt92f
我多次更改我的代码,最后我只能得到类似的东西
HttpWebRequest clnt = HttpWebRequest.Create(baseAddress) as HttpWebRequest;
// Set the content type
clnt.ContentType = "application/x-www-form-urlencoded";
clnt.Method = "POST";
string[] listOfData ={
"oauth_consumer_key="+oauth_consumer_key,
"oauth_signature="+oauth_signature,
"oauth_signature_method"+oauth_signature_method
};
string postData = string.Join("&",listOfData);
byte[] dataBytes= Encoding.ASCII.GetBytes(postData);
Stream newStream = clnt.GetRequestStream();
newStream.Write(dataBytes,0,dataBytes.Length);
我该如何继续?我应该对clnt 进行读取调用吗?
为什么 .NET 开发人员不能创建一个我们可以用来读写的类,而不是创建数百个类并让每个新手都感到困惑。
【问题讨论】:
标签: c# .net http networking launchpad