2016-05-23 174 views
1

我想从一个URL的响应,它必须是JSON这样的:远程服务器返回错误:(400)错误的请求?

{"request_status": "FAILURE", "error_message": "Merchant ID is incorrect", "error_code": "0", "unique_order_id": ""}

我使用Click事件处理程序的代码在我的WinForm(它有5 TextBox控件每处理一个特定的参数,我想收到在文本框中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; 
    } 
} 

但发生异常:

The remote server returned an error: (400) Bad Request

这个网站能正常工作,I W蚂蚁我的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

看起来你正在调用的API不能识别你的请求。检查您是否设置了正确的标题并检查您传递给服务的请求json。 –

+1

也注意到你正在使用WebRequest,使用HttpWebRequest是一个更好的选择。在这里看到一些选项,以帮助你:http://stackoverflow.com/questions/9145667/how-to-post-json-to-the-server –

+0

请查看我的编辑,我已经添加html工作良好 –

回答

0

的HTML表单提交将张贴要么application/x-www-form-urlencodedmultipart/form-data。您的服务电话正试图写入application/json。这可能是你问题的关键。

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

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

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(); 
相关问题