asp.net RESTAPIをsalesforceに接続しようとしています。認証に成功しましたが、POSTリクエストを送信し始めると、エラーが発生します
{"errorCode": "INVALID_SESSION_ID"、 "message": "セッションの有効期限が切れているか無効です"}
これが私のPOSTリクエストです:
//SFServerUrl = "https://na17.salesforce.com/services/";
//url = "data/v28.0/sobjects/Account";
ASCIIEncoding ascii = new ASCIIEncoding();
byte[] postBytes = ascii.GetBytes(postBody);
HttpWebRequest request = WebRequest.Create(Globals.SFServerUrl + url) as HttpWebRequest;
request.Method = "POST";
request.ContentType = "application/json";
request.ContentLength = postBytes.Length;
Stream postStream = request.GetRequestStream();
postStream.Write(postBytes, 0, postBytes.Length);
HttpCookie cookie = HttpContext.Current.Request.Cookies[Globals.SFCookie];
var ticket = FormsAuthentication.Decrypt(cookie.Value);
string authToken = ticket.UserData;
request.Headers.Add("Authorization", "Bearer " + authToken);
postStream.Close();
HttpWebResponse response = request.GetResponse() as HttpWebResponse;
StringBuilder sb = new StringBuilder();
byte[] buf = new byte[8192];
Stream resStream = response.GetResponseStream();
string tempString = null;
int count = 0;
do
{
count = resStream.Read(buf, 0, buf.Length);
if (count != 0)
{
tempString = Encoding.ASCII.GetString(buf, 0, count);
sb.Append(tempString);
}
}
while (count > 0);
return new Tuple<bool, string>(true, sb.ToString());
GETリクエストを送信しようとすると、200のレスポンスを受け取ります。また、Simple Rest Clientから同じトークンを使用してPOSTリクエストを送信しようとしましたが、200の応答が返されます。「Authorization:Bearer」ヘッダーを「Authorization:Oauth」に変更しようとしましたが、何も変更されませんでした。また、このエラーをキャッチし、更新トークンを取得して、更新されたトークンを使用してリクエストを再送信しようとしましたが、何も変更されていません。これを手伝ってください。
まあ、少し遅いかもしれませんが、とにかく。問題は、コンテンツの後にヘッダーを追加したことでした。これらのコード行を切り替えると、すべてが機能しました:)
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加