我有一个Windows窗体,它向Web服务器提交POST请求。这将返回一个网址。
当您对网络服务器进行卷曲时,会发生以下情况:
curl -d 'info={ "EmployeeID": [ "1234567", "7654321" ], "Salary": true, "BonusPercentage": 10}' http://example.com/xyz/php/api/createjob.php
返回的网址
http://example.com/xyz#newjobapi:id=19
现在我想在Windows窗体上复制上述过程,当用户单击该按钮时,它会将所需信息从Windows窗体发布到服务器。
但点击按钮后我没有得到任何回复。它只显示一个空的messageBox。
请告诉我如何将服务器返回的URL显示为弹出窗口。感谢。
我的C#代码:
private void button8_Click(object sender, EventArgs e)
{
HttpWebRequest webRequest;
string requestParams = "\'info={ \"EmployeeID\": [ \"1234567\", \"7654321\" ], \"Salary\": true, \"BonusPercentage\": 10}\'";
byte[] byteArray = Encoding.UTF8.GetBytes(requestParams);
webRequest = (HttpWebRequest)WebRequest.Create("http://example.com/xyz/php/api/createjob.php");
webRequest.Method = "POST";
webRequest.ContentType = "application/json";
webRequest.ContentLength = byteArray.Length;
using (Stream requestStream = webRequest.GetRequestStream())
{
requestStream.Write(byteArray, 0, byteArray.Length);
}
// Get the response.
using (WebResponse response = webRequest.GetResponse())
{
using (Stream responseStream = response.GetResponseStream())
{
StreamReader rdr = new StreamReader(responseStream, Encoding.UTF8);
string Json = rdr.ReadToEnd(); // response from server
MessageBox.Show("URL Returned: " + Json);
}
}
}
答案 0 :(得分:1)
如果我执行此操作:
setItems()
这是输出的一部分:
curl --trace con -d "info={ 'Blah': 10}" http://example.com/xyz/php/api/createjob.php
这意味着:
00a0: 0d 0a 43 6f 6e 74 65 6e 74 2d 54 79 70 65 3a 20 ..Content-Type:
00b0: 61 70 70 6c 69 63 61 74 69 6f 6e 2f 78 2d 77 77 application/x-ww
00c0: 77 2d 66 6f 72 6d 2d 75 72 6c 65 6e 63 6f 64 65 w-form-urlencode
00d0: 64 0d 0a 0d 0a d....
不以PHP理解的方式发送数据。我的猜测是PHP正在做这样的webRequest.ContentType = "application/json";
服务器端。期待form values to be posted。
相反,您应该发送curl发送的内容:
$info = $_POST['info']
因为它会发送一个表单并用PHP填充webRequest.ContentType = "application/x-www-form-urlencoded";
数组。