DotNetOpenAuth发布问题 - Bitbucket部署密钥

时间:2013-03-11 12:10:30

标签: dotnetopenauth bitbucket-api

我肯定会反对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的表格帖子的好样本,所以如果看起来我很懒,那么道歉;我的google fu只是不支付股息。

1 个答案:

答案 0 :(得分:1)

尝试使用以下内容实例化MessageReceivingEndpoint:

new MessageReceivingEndpoint(url, HttpDeliveryMethods.AuthorizationHeaderRequest | HttpDeliveryMethods.PostRequest);