我有一个问题,因为我需要将一些json发送到网址。当我将所有json和令牌发送到页面时。
然后系统中将没有内容JSON值。
我已检查过是否有某些内容并且它存在,但它发送的只是不喜欢json值。
string apiKeyToken = model.reepaytoken; // TOKEN HERE.
string URLLink = APIClassPay.HelperPay.CreateCustomerURL;//URL to send it json to.
WebClient client = new WebClient();
//JSON coming here!
var JSONCustomer = APIClassPay.HelperPay.CreateCustomer(model.Brugernavn, model.Adresse, model.Byen, model.Postnr.ToString(), model.Mobil.ToString(), model.Fornavn, model.Efternavn);
client.Headers.Add("text/json", JSONCustomer);
client.Headers.Set("X-Auth-Token", apiKeyToken);
string reply = client.DownloadString(URLLink);
当我吹我的json看起来像这样。
[HttpPost]
public ActionResult information(BuyMedlemskabViewModel model)
{
DataLinqDB db = new DataLinqDB();
var Pric = db.PriceValues.FirstOrDefault(i => i.id == model.HiddenIdMedlemskab);
if (Pric != null)
{
string _OrderValue = DateTime.Now.Year + Helper.Settings.PlanValue();
Session[HelperTextClass.HelperText.SessionName.OrderId] = _OrderValue;
Session[HelperTextClass.HelperText.SessionName.FakturaId] = model.HiddenIdMedlemskab;
Session[HelperTextClass.HelperText.SessionName.fornavn] = model.Fornavn;
Session[HelperTextClass.HelperText.SessionName.efternavn] = model.Efternavn;
Session[HelperTextClass.HelperText.SessionName.Adresse] = model.Adresse;
Session[HelperTextClass.HelperText.SessionName.Post] = model.Postnr;
Session[HelperTextClass.HelperText.SessionName.Byen] = model.Byen;
Session[HelperTextClass.HelperText.SessionName.Mobil] = model.Mobil;
string apiKeyToken = model.reepaytoken;.
string URLLink = APIClassPay.HelperPay.CreateCustomerURL;//URL to send it json to.
WebClient client = new WebClient();
//JSON coming here!
var JSONCustomer = APIClassPay.HelperPay.CreateCustomer(model.Brugernavn, model.Adresse, model.Byen, model.Postnr.ToString(), model.Mobil.ToString(), model.Fornavn, model.Efternavn);
client.Headers.Add("text/json", JSONCustomer);
client.Headers.Set("X-Auth-Token", apiKeyToken);
string reply = client.DownloadString(URLLink);
}
return RedirectToAction("information");
}
编辑 - 更新(错误在这里):
ReePay API参考:https://docs.reepay.com/api/
答案 0 :(得分:1)
我认为有一些事情,你必须解决:
首先,您显然正在尝试创建资源(通常是POST或PUT,在REST-words中发言,但您正在使用WebClient
的{{ 1}} - 方法which performs a GET。所以我认为您应该使用POST或PUT,但选择哪一个完全取决于您正在联系的Web服务。
然后你似乎弄错了DownloadString
- 标题并试图将有效载荷打包在那里。有效负载 - 您的客户JSON - 必须放入请求的正文中。
根据您之前的问题,我假设您尝试联系的服务是PayPal或QuickPay。为了进一步帮助您解决这个问题,如果您可以指定使用哪个问题,将会很有帮助。
如果是QuickPay,请注意您可以使用official .NET client而不是自己使用Content-Type
。
但无论如何,在发出HTTP请求时,我建议您使用HttpClient
来支持WebClient
。你通常会这样做:
WebClient
修改强>
正如您在评论中澄清的那样,您使用的服务是Reepay。如果您查看create customer method的文档,可以看到必要的HTTP方法是POST。因此,上面的代码段通常应该适合。
关于您遇到的编译错误,我更新了上面的代码。我选择的变量名中有一个错误。请注意,您从屏幕截图中删除了关键字using (var httpClient = new HttpClient())
{
var request = new HttpRequestMessage(HttpMethod.Post,
APIClassPay.HelperPay.CreateCustomerURL);
request.Headers.Add("X-Auth-Token", apiKeyToken);
request.Headers.Add("Content-Type", "application/json");
request.Content = new StringContent(JSONCustomer);
var response = await httpClient.SendAsync(request);
}
。请重新输入。如果编译器抱怨它,那么项目的.NET框架版本很可能小于4.5,这是使用async / await所必需的。
因此,您应该将项目的.NET框架版本最好更新到版本4.6.1,因为支持4.5的Microsoft recently announced已停止使用。看看here如何做到这一点。