首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >远程服务器返回一个错误:(400)坏请求?

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

Stack Overflow用户
提问于 2016-05-23 15:16:21
回答 1查看 1.7K关注 0票数 1

我试图从url获得响应,它必须是JSON,如下所示:

{"request_status":“失败”,"error_message":“商人ID不正确”,"error_code":"0","unique_order_id":""}

我在我的winForm中的单击事件处理程序中使用了这段代码(它有5个textbox控件每个处理一个特定的参数,我想在textbox textBoxResponse中接收JSON文件。

代码语言:javascript
复制
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表现得像这样:

代码语言:javascript
复制
<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>
EN

回答 1

Stack Overflow用户

发布于 2016-05-23 15:56:51

HTML将是POSTing ( application/x-www-form-urlencodedmultipart/form-data )。您的服务调用正在尝试编写application/json。这很可能是你问题的症结所在。

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

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

代码语言:javascript
复制
var request = (HttpWebRequest)WebRequest.Create("http://www.example.com/recepticle.aspx");

var postData = "thing1=hello";
    postData += "&thing2=world";
var data = Encoding.ASCII.GetBytes(postData);

request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = data.Length;

using (var stream = request.GetRequestStream())
{
    stream.Write(data, 0, data.Length);
}

var response = (HttpWebResponse)request.GetResponse();

var responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37394680

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档