現在Launchpad's API
、C#.NETまたはMonoを使用して、その上に小さなラッパーを作成しようとしています。のとおりOAuth
、最初にリクエストに署名する必要があり、Launchpadには独自の方法があります。
私がする必要があるのは、https://edge.launchpad.net/+request-tokenへの接続を作成することContent-type
です。Pythonにはurllib2がありますが、System.Net名前空間を見ると、頭がおかしくなりました。どうやって始めたらいいのかわからなかった。WebRequest
、、HttpWebRequest
またはを使用できるかどうかについては、多くの混乱がありますWebClient
。WebClientを使用すると、証明書エラーが発生することもあります。これは、信頼できるものとして追加されていないためです。
API Docsから、3つのキーを経由して送信する必要があると書かれています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);
どうすればさらに先に進むことができますか?にRead呼び出しを行う必要がありclnt
ますか?
.NET開発者は、何百ものクラスを作成してすべての新規参入者を混乱させる代わりに、読み取りと書き込みに使用できる1つのクラスを作成できないのはなぜですか。