2017-02-08 13 views
-1

私は支払いプラットフォームをWebアプリケーションに統合しようとしていますが、トランザクションを照会するための要件の1つは、get要求を使用して(特定の変数の)ハッシュ値をヘッダーとして送信することです。これは私がしようとしたものです:HttpClientを使用してハッシュ値をヘッダーとして送信する方法

string hashcode = "3409877" + "117" + "D3D1D05AFE42AD508"; 
var hashedBytes = SHA512.Create().ComputeHash(Encoding.UTF8.GetBytes(hashcode)); 
// Get the hashed string. 
var hash = BitConverter.ToString(hashedBytes).Replace("-", "").ToLower(); 
hash = hash.ToString().ToUpper(); 
var amount_kobo = Convert.ToInt32(model.TransactionAmount * 100); 
string url = "https://sandbox.interswitchng.com/collections/api/v1/gettransaction.json?productid=117&transactionreference=" + model.TransactionReference + "&amount=" + amount_kobo; 

using (var client = new HttpClient()) 
{ 

#if DNX451 
    // ignore server certificate error 
    //ServicePointManager.ServerCertificateValidationCallback += (sender, certificate, chain, errors) => { return true; }; 
    ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12; 
#elif DNXCORE50 
    // no implementation for the target DNX 
#endif 
    client.BaseAddress = new Uri(url); 
    client.DefaultRequestHeaders.Accept.Clear(); 


client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("text/html")); 
    client.DefaultRequestHeaders.Add("Hash",hash); 


    HttpResponseMessage response = await client.GetAsync(url); 
    string responsestr = ""; 
    if (response.IsSuccessStatusCode) 
    { 
     responsestr = await response.Content.ReadAsStringAsync(); 
     return Json(new { success = true, response = responsestr, hash = hash }); 
    } 
} 

が、私は、私は私のハッシュヘッダーが表示されていない要求を送信した後も、ハッシュタイプとしてヘッダを送信することになっていますブラウザを検査するとき、私のハッシュは、送信されませんが、私は何をすべきか分かりません。

私はこの行を変更しようとしている:

client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("hash")); 

はまだそれが動作しません。

更新 ここでは、ブラウザ Request headers

のリクエストヘッダのスクリーンショットである私のヘッダーが全く送信されないようです。

答えて

0

client.DefaultRequestHeaders.Add("Hash", hash)を代わりに使用してください。

あなたのコードは、受け入れ可能なメディアタイプを指定するために使用されるAccept request-headerを追加しようとします。

+0

厥は働いていません後、私は、リクエストヘッダに私の答えを更新しましたブラウザに表示され、私のハッシュヘッダはそこにありません...私のヘッダがplsから送信されるのを止めることができますか? –

+0

ありがとう、多くの、削除されたclient.DefaultRequestHeaders.Accept.Add(新しいSystem.Net.Http.Headers.MediaTypeWithQualityHeaderValue( "ハッシュ"));それは働いた。 –

0

ハッシュを文字列に変換した後、文字列にはGETリクエストの送信に制限された文字が含まれることがあります。だから、送信する前Uri.EscapeDataString()機能を使用して文字列をエンコードするために検討する必要があります。

hash = Uri.EscapeDataString(hash); 

またはBase64で とencodeわずか数シンボルへconverthashedBytesはそれ

関連する問題