2012-04-12 7 views
2

私はDotNetOpenAuthフレームワークを使用しています。このフレームワークは、消費するデータの処理速度を上げるのに最適です。OAuth 1とDotNetOpenAuthを使用して、フォームデータをLinkedInにマルチポストする方法は?

私はそれをLinkedInと話すために使用しており、サイトに情報を投稿/共有するための正しいアプローチを考え出すのに問題があります。ここに私が使用している参照があります - http://developer.linkedin.com/documents/share-api

私はいつも以下のエラー応答を取得します。

ダイレクトメッセージの送信中または応答の取得中にエラーが発生しました。 リモートサーバーがエラーを返しました:(400)不正な要求。

私はOauth v1.0aを使用しています。

ここは私のコードです。

 try 
     { 
      HttpDeliveryMethods resourceHttpMethod = HttpDeliveryMethods.PostRequest | HttpDeliveryMethods.AuthorizationHeaderRequest; 

      string xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><share><comment>83% of employers will use social media to hire: 78% LinkedIn, 55% Facebook, 45% Twitter [SF Biz Times] http://bit.ly/cCpeOD</comment>"; 
      xml += "<content><title>Survey: Social networks top hiring tool - San Francisco Business Times</title>"; 
      xml += "<submitted-url>http://sanfrancisco.bizjournals.com/sanfrancisco/stories/2010/06/28/daily34.html</submitted-url>"; 
      xml += "<submitted-image-url>http://images.bizjournals.com/travel/cityscapes/thumbs/sm_sanfrancisco.jpg</submitted-image-url>"; 
      xml += "</content><visibility><code>anyone</code></visibility></share>"; 

      var multiparts = new List<MultipartPostPart>(); 
      MultipartPostPart part = MultipartPostPart.CreateFormPart("body", xml); 
      part.PartHeaders[HttpRequestHeader.ContentType] = "application/xml"; 
      multiparts.Add(part); 

      var resourceEndpoint = new MessageReceivingEndpoint("http://api.linkedin.com/v1/people/~/shares", resourceHttpMethod); 
      HttpWebRequest request = consumer.PrepareAuthorizedRequest(resourceEndpoint, accessToken, multiparts); 
      request.ServicePoint.Expect100Continue = false; 

      IncomingWebResponse response = consumer.Channel.WebRequestHandler.GetResponse(request); 
      this.resultsBox.Text = response.GetResponseReader().ReadToEnd(); 
     } 
     catch (Exception ex) 
     { 

     } 

おかげ

答えて

1

は私が必要な方向を得たが、投稿する前に解決策を確認したかったヴィンテージのGoogleニュースグループから誰かに話して、戻ってこの上の書き込みを忘れました。

大きな問題は、リクエストデータを送信する前にマルチパートデータを追加して、リクエストを自分で作成し、新しいコンテンツをストリームに書き込むことではありませんでした。

OAuthとRESTを初めて使用しているので、私はすべてのインとアウトを知らないので、LinkedIn APIとTwitter REST APIの両方に対してこのコードを検証しても十分です。

ここに新しいコードがあります。

 try 
     { 
      Encoding encoder = Encoding.ASCII; 
      HttpDeliveryMethods resourceHttpMethod = HttpDeliveryMethods.PostRequest | HttpDeliveryMethods.AuthorizationHeaderRequest; 

      byte[] bytes = encoder.GetBytes(xd.OuterXml.ToString()); 

      var resourceEndpoint = new MessageReceivingEndpoint(ResourceURL, resourceHttpMethod); 
      HttpWebRequest request = _consumer.PrepareAuthorizedRequest(resourceEndpoint, _manager.AccessToken); 
      request.ServicePoint.Expect100Continue = false; 

      request.Method = "POST"; 
      request.ContentLength = bytes.Length; 
      request.ContentType = "application/xml"; 

      using (System.IO.Stream requestStream = request.GetRequestStream()) 
      { 
       requestStream.Write(bytes, 0, bytes.Length); 
      } 

      IncomingWebResponse response = _consumer.Channel.WebRequestHandler.GetResponse(request); 

      ret = true; 
     } 
     catch (Exception ex) 
     { 
      _Logger.Error(OpenLogger.FormatException(ex)); 
     } 
関連する問題