私は今のところ、1週間ほど立ち往生しています。何らかの理由で、トランザクショントークンとセッショントークンを使用するVISAサービス用のこの認証APIがあります。VISAサービスのHttpWebRequestは400を返し続けます。
リモートサーバーエラー(400)不正リクエスト。
私を含むほとんどすべて試してみた:WebClient
コンポーネント
、何に切り替える
- JSONフォーマット(コメントコード)
- が動作しているようですが、これはコードです:
string statusCode; string body = "{" + "\"transactionToken\": \"" + transactionToken + "\"," + "\"sessionToken\": \"" + sessionToken + "\"" + "}"; string requestURL = "https://devapice.vnforapps.com/api.authorization/api/v1/authorization/web/{MyMerchantId}"; string id = "xxxxxx"; string password = "yyyyyyy"; string respuesta = ""; try { HttpWebRequest request = WebRequest.Create(requestURL) as HttpWebRequest; request.Method = "POST"; request.ContentType = "application/json"; request.Accept = "application/json"; var requestStringBytes = Encoding.UTF8.GetBytes(body); request.GetRequestStream().Write(requestStringBytes, 0, requestStringBytes.Length); request.Headers["Authorization"] = GetBasicAuthHeader(id, password); request.Headers["VisaNet-Session-Key"] = sessionToken; /* using (var streamWriter = new StreamWriter(request.GetRequestStream())) { var json = JsonConvert.SerializeObject(new { transactionToken = transactionToken, sessionToken = sessionToken }, Formatting.Indented); streamWriter.Write(json); } */ using (HttpWebResponse response = request.GetResponse() as HttpWebResponse) { statusCode = response.StatusCode.ToString(); Stream receiveStream = response.GetResponseStream(); StreamReader readStream = new StreamReader(receiveStream, Encoding.UTF8); respuesta = readStream.ReadToEnd(); } } catch (WebException ex) { using (WebResponse response = ex.Response) { var httpResponse = (HttpWebResponse)response; using (Stream data = response.GetResponseStream()) { StreamReader sr = new StreamReader(data); respuesta = sr.ReadToEnd(); } } }
シーズンの残りのセッションキーを作成する前と最初のAPIがあります。このセッションキーをセッション変数に保存しました。何が起こっているのでしょうか?ここでは多くの類似ケースを読みました。運がなければ最高のものを適用しようとしました。
GetBasicAuthHeader
関数は、最初のAPIに対して正しく動作する基本認証ヘッダーを設定するためのカスタム関数です。
それでも、StatusCode = 400、StatusDescription = Bad Requestがあることがわかります。 –
上記の私の編集を参照してください。 –
別のVISA資格情報で試したところ、改善が正しく機能しています。 –