我试图从url获得响应,它必须是JSON,如下所示:
{"request_status":“失败”,"error_message":“商人ID不正确”,"error_code":"0","unique_order_id":""}
我在我的winForm中的单击事件处理程序中使用了这段代码(它有5个textbox控件每个处理一个特定的参数,我想在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;
}
}但有一个例外情况:
远程服务器返回一个错误:(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>发布于 2016-05-23 15:56:51
HTML将是POSTing ( application/x-www-form-urlencoded或multipart/form-data )。您的服务调用正在尝试编写application/json。这很可能是你问题的症结所在。
服务会接受JSON (检查它的接受头)吗?如果是这样的话,您需要在请求头中设置它。
或者,将您的代码更改为post 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();https://stackoverflow.com/questions/37394680
复制相似问题