远程服务器返回错误:(400)错误请求?

时间:2016-05-23 15:16:21

标签: c# json http

我正在尝试从网址获取响应,该网址必须是JSON:

  

{“request_status”:“FAILURE”,“error_message”:“商家ID是   不正确的“,”error_code“:”0“,”unique_order_id“:”“}

我在winForm中的click事件处理程序中使用此代码(它有5个文本框控件,每个处理一个特定的参数,我想在文本框textBoxResponse中接收JSON文件。

private void button1_Click(object sender, EventArgs e)
{
    WebRequest request = WebRequest.Create("http://test5.paymobsolutions.com/api/merchant/pay_order_online/");
    request.Method = WebRequestMethods.Http.Post;
    //request.Headers.Add("REF-1", "me1");
    //request.Headers.Add("REF-2", "me2");
    request.Proxy = null;
    using (var streamWriter = new StreamWriter(request.GetRequestStream()))
    {
        PaymentParamters paras = new PaymentParamters { c_cvv_U = textBoxCVV.Text, c_expiry_mm_U = textBoxExM.Text, c_expiry_yy_U = textBoxExY.Text, c_holder_name_U = textBoxHolderName.Text, c_pan_U = textBoxPAN.Text };

        string json = JsonConvert.SerializeObject(paras);
        streamWriter.Write(json);
        streamWriter.Flush();
        streamWriter.Close();
    }
    var response = request.GetResponse();
    using (var streamReader = new StreamReader(response.GetResponseStream()))
    {
        var result = streamReader.ReadToEnd();
        textBoxResponse.Text = result;
    }
}

但是会发生异常:

  

远程服务器返回错误:(400)错误请求

这个html工作得很好,我想让我的winForm像这样:

<form method="post" action="http://test5.paymobsolutions.com/api/merchant/pay_order_online/">
    <input type="text" placeholder="pan"            name="c_pan_U" value="" />
    <input type="text" placeholder="holder_name"    name="c_holder_name_U" value ="" />
    <input type="text" placeholder="expiry_mm"      name="c_expiry_mm_U" value="" />
    <input type="text" placeholder="expiry_yy"      name="c_expiry_yy_U" value="" />
    <input type="text" placeholder="cvv"            name="c_cvv_U" value="" />
    <input type="submit" />
</form>

1 个答案:

答案 0 :(得分:0)

HTML表单帖子将发布controller?.sourceRect = CGRectMake(self.view.layer.bounds.width * 0.5, self.view.layer.bounds.height * 0.5,0.0,0.0) application/x-www-form-urlencoded。您的服务电话正在尝试撰写multipart/form-data。这很可能是你问题的症结所在。

服务是否接受JSON(检查它的接受标头)?如果是这样,您需要在请求标头中设置它。

或者,将代码更改为发布x-www-form-urlencoded。 See this post for a sample,下面张贴了一个片段供您参考。

application/json