0

私は間違いなく Oauth 署名付きリクエストに頭を悩ませているので、それが私のコードなのか、DotNetOpenAuth なのか Bitbucket なのかわかりません。

に従って新しいデプロイキーを追加しようとしています

https://confluence.atlassian.com/display/BITBUCKET/deploy-keys+Resource

WebExceptionという言葉をもらっています

The request was aborted: The connection was closed unexpectedly.

DotNetOpenAuth で正しく投稿していますか? 良いサンプルが見つからないようですか?

私のコードは次のとおりです。

var payload = new Dictionary<string, string>
                    {
                        {"accountname", username},
                        {"key", Uri.EscapeDataString(key.PublicKey)}
                    };

var dataUrl = @"https://api.bitbucket.org/1.0/repositories/{0}/{1}/deploy-keys";
var url = string.Format(dataUrl, username, projectName);
var endpoint = new MessageReceivingEndpoint(url, HttpDeliveryMethods.PostRequest);
var request = _consumer.PrepareAuthorizedRequest(endpoint, authToken, payload);

var payloadItems = from kvp in payload
            select kvp.Key + "=" + kvp.Value;
var data = Encoding.UTF8.GetBytes(string.Join("&", payloadItems));

using (var stream = request.GetRequestStream())
{
    stream.Write(data, 0, data.Length);
}

string responseString;
using (var response = request.GetResponse())
{
    using (var responseStream = new StreamReader(response.GetResponseStream()))
    {
        responseString = responseStream.ReadToEnd();
    }
}

DotNetOpenAuth を使用したフォーム投稿の良いサンプルが必要なだけだと感じているので、怠け者のように思えたら申し訳ありません。私のグーグルフーは配当を払っていません。

4

1 に答える 1

1

次のように MessageRecomingEndpoint をインスタンス化してみてください。

new MessageReceivingEndpoint(url, HttpDeliveryMethods.AuthorizationHeaderRequest | HttpDeliveryMethods.PostRequest);
于 2013-03-18T21:41:42.687 に答える