如何使用C#使用包含标头和正文的JSON API? [英] How can I consume a JSON API with both header and body using C#

查看:82
本文介绍了如何使用C#使用包含标头和正文的JSON API?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

亲爱的团队,



请帮助我。我想使用一个既需要使用C#又需要使用C#的API,而我所有努力实现这一点已被证明是无效的。下面是在POSTMAN上加载时的预请求脚本,同样可以通过链接导入邮递员集合 - https://www.getpostman.com/collections/ce99da192f80e44fb476。



我将非常感谢为实现这一目标而提供的任何帮助。



var merchantId =KUDI1234;

var apiKey = S1VESTEyMzR8S1VESQ ==;

var apiToken =dWFBTVVGTGZRUEZaemRvVC8wYVNuRkVTc2REVi9GWGdCMHRvWHNXTnovaz0 =;

var fromBank =044;

var debitAccount =1234565678 ;

var toBank =058;

var creditAccount =0582915208017;

var narration =Regular Payment;

var amount =5000;

var beneficiaryEmail =qa@test.com;

var AES_128_ENCRYPT = function(rawData)

{

var key =cymsrniuxqtgfzva;

var iv =czidrfwqugpaxvkj;

key = CryptoJS.enc。 Utf8.parse(key);

iv = CryptoJS.enc.U tf8.parse(iv);

var encryptData = CryptoJS.AES.encrypt(CryptoJS.enc.Utf8.parse(rawData),key,

{

keySize:128/8,

iv:iv,

模式:CryptoJS.mode.CBC,

填充:CryptoJS。 pad.Pkcs7

});

返回encryptData;



}

creditAccount = AES_128_ENCRYPT(creditAccount);

var d = new Date();

var requestId = d.getTime();

var randomnumber = Math.floor(Math.random()* 1101233)

var transRef = randomnumber;

var apiHash = CryptoJS.SHA512(apiKey + requestId + apiToken);

toBank = AES_128_ENCRYPT(toBank);

旁白= AES_128_ENCRYPT(旁白);

金额= AES_128_ENCRYPT(金额);

transRef = AES_128_ENCRYPT(transRef);

fromBank = AES_128_ENCRYPT(fromBank);

debitAccoun t = AES_128_ENCRYPT(debitAccount);

beneficiaryEmail = AES_128_ENCRYPT(beneficiaryEmail);

var dd = d.getDate();

var mm = d.getMonth()+ 1; //一月是0!

var yyyy = d.getFullYear();

if(dd< 10){

dd ='0 '+ dd;

}

if(mm< 10){

mm ='0'+ mm;

}

var hours = d.getUTCHours();

var minutes = d.getUTCMinutes();

var seconds = d。 getUTCSeconds();

var timeStamp = yyyy +' - '+ mm +' - '+ dd +'T'+小时+':'+分钟+':'+秒+'+ 000000';

postman.setGlobalVariable('merchantId',merchantId);

postman.setGlobalVariable('apiKey',apiKey);

postman.setGlobalVariable('requestId', requestId);

postman.setGlobalVariable('apiHash',apiHash);

postman.setGlobalVariable('timeStamp',timeStamp);

postman .setGlobalVariable('toBank',toBank);

postman.setGlobalVariable('creditAccount',creditAccount);

postman.setGlobalVariable('narration',narration);

postman.setGlobalVariable('am $',金额);

postman.setGlobalVariable('transRef',transRef);

postman.setGlobalVariable('fromBank',fromBank);

postman.setGlobalVariable('debitAccount',debitAccount);

postman.setGlobalVariable('beneficiaryEmail',beneficiaryEmail);

//pm.variables.get(\"variable_key );



我的尝试:



// = ===========我的代码打电话给第三方转账====================

试试< br $>
{

var apiToken =dWFBTVVGTGZRUEZaemRvVC8wYVNuRkVTc2REVi9GWGdCMHRvWHNXTnovaz0 =;

var apiKey =S1VESTEyMzR8S1VESQ ==;

var requestId = objacc.Transid.ToString();

double getFullYear = Convert.ToDouble(System.DateTime.Now.Year.ToString());

double getMonth = Convert .ToDouble(System.DateTime.Now.Month.ToString());

double getDate = Convert.ToDouble(System.DateTime.Now.Day.ToString());

double getUTCHours = Convert.ToDouble(System.DateTime.Now.Hour.ToString()) ;

double getUTCMinutes = Convert.ToDouble(System.DateTime.Now.Minute.ToString());

double getUTCSeconds = Convert.ToDouble(System.DateTime.Now。 Second.ToString());



var dd = getDate;

var mm = getMonth + 1; //一月是0!

var yyyy = getFullYear;

if(dd< 10)

{

dd ='0'+ dd;

}

if(mm< 10)

{

mm ='0'+ mm;

}

var hours = getUTCHours;



var minutes = getUTCMinutes ;

var seconds = getUTCSeconds;

var timeStamp = yyyy + - + mm + - + dd +T+小时+:+分钟+:+秒++000000;

var apiHash = GenerateSHA512String(apiKey + requestId + apiToken);

// var apiHash = CryptoJS.SHA512(apiKey + requestId + apiToken);



double n4 = Convert.ToDouble(timeStamp);

double randomnumber = Math.Floor( (n4)* 1101233);

// var randomnumber = Math.floor(Math.random()* 1101233);

var transRef1 = randomnumber;



double toBank1 = 058;

double fromBank1 = 044;

double debitAccount1 = 1234565678;

double creditAccount1 = 0582915208017;

string narration1 =Regular Payment;

double amount1 = 5000;

string beneficiaryEmail1 =qa @ test .com;



double toBank = Convert.ToDouble(toBank1);

string narration =(narration1);

double amount = Convert.ToDouble(amount1);

double transRef = Convert.ToDouble(transRef1);

double fromBank = Convert.ToDouble(fromBank1);

double debitAccount = Conver t.ToDouble(debitAccount1);

string beneficiaryEmail =(beneficiaryEmail1);

double creditAccount = Convert.ToDouble(creditAccount1);



{

var httpWebRequest =(HttpWebRequest)WebRequest.Create(https://remitademo.net/remita/exapp/api/v1/send/api/rpgsvc/rpg/ api / v2 / merc / payment / singlePayment.json);

httpWebRequest.ContentType =application / json;

httpWebRequest.Method =POST;

使用(var streamWriter = new



StreamWriter(httpWebRequest.GetRequestStream()))

{

string json = new JavaScriptSerializer()。Serialize(new

{



MERCHANT_ID =KUDI1234,

API_KEY =S1VESTEyMzR8S1VESQ ==,

REQUEST_ID = objacc.Transid.ToString(),

REQUEST_TS = timeStamp,

API_DETAILS_HASH = apiHash < br $> b $ b

});

{

toBank = Convert.ToDouble(objacc.phone.ToString());

creditAccount = Convert.ToDouble(objacc.phone.ToString());

叙述= objacc.phone.ToString();

金额= Convert.ToDouble(objacc.phone.ToString());

transRef = Convert.ToDouble(objacc.phone.ToString());

fromBank = Convert.ToDouble (objacc.phone.ToString());

debitAccount = Convert.ToDouble(obja cc.phone.ToString());

beneficiaryEmail = objacc.phone.ToString();



}







streamWriter.Write(json);

}

var httpResponse =(HttpWebResponse)httpWebRequest.GetResponse();

using(var streamReader = new StreamReader(httpResponse.GetResponseStream()))

{

var result = streamReader.ReadToEnd();

Dear Team,

Please assist me. I want to consume an API that require both header and Body using C# and all my effort to achieve this has prove abortive. Below is the Pre-request SCRIPT when loaded on POSTMAN and same can be imported into postman collection via the link - https://www.getpostman.com/collections/ce99da192f80e44fb476.

I will appreciate any assistance that can be render to achieve this.

var merchantId ="KUDI1234";
var apiKey ="S1VESTEyMzR8S1VESQ==";
var apiToken ="dWFBTVVGTGZRUEZaemRvVC8wYVNuRkVTc2REVi9GWGdCMHRvWHNXTnovaz0=";
var fromBank= "044";
var debitAccount = "1234565678";
var toBank = "058";
var creditAccount = "0582915208017";
var narration = "Regular Payment";
var amount = "5000";
var beneficiaryEmail = "qa@test.com";
var AES_128_ENCRYPT = function(rawData)
{
var key = "cymsrniuxqtgfzva";
var iv = "czidrfwqugpaxvkj";
key = CryptoJS.enc.Utf8.parse(key);
iv = CryptoJS.enc.Utf8.parse(iv);
var encryptData = CryptoJS.AES.encrypt(CryptoJS.enc.Utf8.parse(rawData), key,
{
keySize: 128 / 8,
iv: iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
});
return encryptData;

}
creditAccount = AES_128_ENCRYPT(creditAccount);
var d = new Date();
var requestId = d.getTime();
var randomnumber=Math.floor(Math.random()*1101233)
var transRef = randomnumber;
var apiHash = CryptoJS.SHA512(apiKey + requestId + apiToken);
toBank = AES_128_ENCRYPT(toBank);
narration = AES_128_ENCRYPT(narration);
amount = AES_128_ENCRYPT(amount);
transRef = AES_128_ENCRYPT(transRef);
fromBank= AES_128_ENCRYPT(fromBank);
debitAccount = AES_128_ENCRYPT(debitAccount);
beneficiaryEmail = AES_128_ENCRYPT(beneficiaryEmail);
var dd = d.getDate();
var mm = d.getMonth()+1; //January is 0!
var yyyy = d.getFullYear();
if(dd<10){
dd='0'+dd;
}
if(mm<10){
mm='0'+mm;
}
var hours = d.getUTCHours();
var minutes = d.getUTCMinutes();
var seconds = d.getUTCSeconds();
var timeStamp = yyyy+'-'+mm+'-'+dd+'T'+hours+':'+minutes+':'+seconds+'+000000';
postman.setGlobalVariable('merchantId', merchantId);
postman.setGlobalVariable('apiKey', apiKey);
postman.setGlobalVariable('requestId', requestId);
postman.setGlobalVariable('apiHash', apiHash);
postman.setGlobalVariable('timeStamp', timeStamp);
postman.setGlobalVariable('toBank', toBank);
postman.setGlobalVariable('creditAccount', creditAccount);
postman.setGlobalVariable('narration', narration);
postman.setGlobalVariable('amount', amount);
postman.setGlobalVariable('transRef', transRef);
postman.setGlobalVariable('fromBank', fromBank);
postman.setGlobalVariable('debitAccount', debitAccount);
postman.setGlobalVariable('beneficiaryEmail', beneficiaryEmail);
//pm.variables.get("variable_key");

What I have tried:

//============my code to call third party for fund transfer====================
try
{
var apiToken = "dWFBTVVGTGZRUEZaemRvVC8wYVNuRkVTc2REVi9GWGdCMHRvWHNXTnovaz0=";
var apiKey = "S1VESTEyMzR8S1VESQ==";
var requestId = objacc.Transid.ToString();
double getFullYear = Convert.ToDouble(System.DateTime.Now.Year.ToString());
double getMonth = Convert.ToDouble(System.DateTime.Now.Month.ToString());
double getDate = Convert.ToDouble(System.DateTime.Now.Day.ToString());
double getUTCHours = Convert.ToDouble(System.DateTime.Now.Hour.ToString());
double getUTCMinutes = Convert.ToDouble(System.DateTime.Now.Minute.ToString());
double getUTCSeconds = Convert.ToDouble(System.DateTime.Now.Second.ToString());

var dd = getDate;
var mm = getMonth + 1; //January is 0!
var yyyy = getFullYear;
if (dd < 10)
{
dd = '0' + dd;
}
if (mm < 10)
{
mm = '0' + mm;
}
var hours = getUTCHours;

var minutes = getUTCMinutes;
var seconds = getUTCSeconds;
var timeStamp = yyyy + "-" + mm + "-" + dd + "T" + hours + ":" + minutes + ":" + seconds + "+000000";
var apiHash = GenerateSHA512String(apiKey + requestId + apiToken);
// var apiHash = CryptoJS.SHA512(apiKey + requestId + apiToken);

double n4 = Convert.ToDouble(timeStamp);
double randomnumber = Math.Floor((n4) * 1101233);
// var randomnumber = Math.floor(Math.random() * 1101233);
var transRef1 = randomnumber;

double toBank1 = 058;
double fromBank1 = 044;
double debitAccount1 = 1234565678;
double creditAccount1 = 0582915208017;
string narration1 = "Regular Payment";
double amount1 = 5000;
string beneficiaryEmail1 = "qa@test.com";

double toBank = Convert.ToDouble(toBank1);
string narration = (narration1);
double amount = Convert.ToDouble(amount1);
double transRef = Convert.ToDouble(transRef1);
double fromBank = Convert.ToDouble(fromBank1);
double debitAccount = Convert.ToDouble(debitAccount1);
string beneficiaryEmail = (beneficiaryEmail1);
double creditAccount = Convert.ToDouble(creditAccount1);

{
var httpWebRequest = (HttpWebRequest)WebRequest.Create("https://remitademo.net/remita/exapp/api/v1/send/api/rpgsvc/rpg/api/v2/merc/payment/singlePayment.json");
httpWebRequest.ContentType = "application/json";
httpWebRequest.Method = "POST";
using (var streamWriter = new

StreamWriter(httpWebRequest.GetRequestStream()))
{
string json = new JavaScriptSerializer().Serialize(new
{

MERCHANT_ID = "KUDI1234",
API_KEY = "S1VESTEyMzR8S1VESQ==",
REQUEST_ID = objacc.Transid.ToString(),
REQUEST_TS = timeStamp,
API_DETAILS_HASH = apiHash

});
{
toBank = Convert.ToDouble(objacc.phone.ToString());
creditAccount = Convert.ToDouble(objacc.phone.ToString());
narration = objacc.phone.ToString();
amount = Convert.ToDouble(objacc.phone.ToString());
transRef = Convert.ToDouble(objacc.phone.ToString());
fromBank = Convert.ToDouble(objacc.phone.ToString());
debitAccount = Convert.ToDouble(objacc.phone.ToString());
beneficiaryEmail = objacc.phone.ToString();

}



streamWriter.Write(json);
}
var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
var result = streamReader.ReadToEnd();

 textboxError.Text = result;
                        textboxError.Visible = true;
                    }
                }
            }
            catch (Exception ex)
            {

                this.textboxError.Text = ex.Message;
                textboxError.Visible = true;
}
}
}

推荐答案

我发现任何人都无法帮助你没有错误或反应检查。



我在某些时候看到,你甚至对设置属性有点厌倦:

I see nothing that anyone can help you with since you do no error or response checking.

I see at some point, you even got a little "tired" of setting properties:
toBank = Convert.ToDouble(objacc.phone.ToString());
creditAccount = Convert.ToDouble(objacc.phone.ToString());
narration = objacc.phone.ToString();
amount = Convert.ToDouble(objacc.phone.ToString());
transRef = Convert.ToDouble(objacc.phone.ToString());
fromBank = Convert.ToDouble(objacc.phone.ToString());
debitAccount = Convert.ToDouble(objacc.phone.ToString());
beneficiaryEmail = objacc.phone.ToString();



我真的不认为你的心在这。


I really don't think your heart is in this.


这篇关于如何使用C#使用包含标头和正文的JSON API?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆