2013-03-11 2 views
3

У меня возникла проблема с использованием DotNetOpenAuth для связи с Jira.Использование DotNetOpenAuth с Jira 5.1.2

var payload = 
    new { 
     fields = new 
     { 
      project = new { id = 10000 }, 
      summary = summary, 
      description = description, 
      issuetype = new { id = (int)issueTypeId } 
     } 
    }; 

webRequest = OAuthConsumer.PrepareAuthorizedRequest(
    new MessageReceivingEndpoint(url, HttpDeliveryMethods.PostRequest), 
    accessToken 
); 

byte[] payloadContent = System.Text.Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(payload)); 
webRequest.ContentLength = payloadContent.Length; 
using (var stream = webRequest.GetRequestStream()) 
{ 
    stream.Write(payloadContent, 0, payloadContent.Length); 
} 

Однако webRequest.GetRequestStream() просто бросает исключение This property cannot be set after writing has started.

Я пытаюсь создать новую проблему, используя http://docs.atlassian.com/jira/REST/latest/#id120664. Код работает отлично, если я использую базовую аутентификацию, а не OAuth, и все мои другие вызовы OAuth, используя GET, работают очень хорошо.

У кого-нибудь есть какие-либо советы с использованием DotNetOpenAuth с Jira?

Спасибо!

ответ

3

И, наконец, проблема. Необходимо, чтобы использовать следующий код:

var payload = 
    new { 
     fields = new 
     { 
      project = new { id = 10000 }, 
      summary = summary, 
      description = description, 
      issuetype = new { id = (int)issueTypeId } 
     } 
    }; 

webRequest = OAuthConsumer.PrepareAuthorizedRequest(
    new MessageReceivingEndpoint(url, HttpDeliveryMethods.AuthorizationHeaderRequest | HttpDeliveryMethods.PostRequest), 
    accessToken 
); 

webRequest.ContentType = "application/json"; 

byte[] payloadContent = System.Text.Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(payload)); 
webRequest.ContentLength = payloadContent.Length; 
using (var stream = webRequest.GetRequestStream()) 
{ 
    stream.Write(payloadContent, 0, payloadContent.Length); 
} 

В принципе, мне нужно, чтобы добавить HttpDeliveryMethods.AuthorizationHeaderRequest при вызове PrepareAuthorizedRequest, а затем мне нужно, чтобы установить ContentType свойство, прежде чем добавить что-либо к потоку.

+0

Привет, Я пытаюсь получить доступ к Jira из моего веб-приложения asp.net через RESAT API и OAuth. Я не могу заставить его работать. У меня есть собственный клиент, который реализует OpenIdClient? Что мне нужно сделать? Большое спасибо. – user217648

Смежные вопросы