当我使用cURL发布到我的API时,它100%工作,我在C#中构建一个桌面应用程序,当单击一个按钮时需要相同。当我通过fiddler捕获我的代码时,它显示已成功连接但是给了我这个错误: {“致命”:“没有POST params!”}
当我使用Postman测试我得到同样的错误:
{“致命”:“没有POST params!”}
这是我的cURL脚本:
curl -u用户名:“密码”-X POST http://localhost/api/index.php -d method =“addSubscriber”-d first_name =“test”-d last_name =“account”-d address =“980 westlane,Khomasdal” -d postcode =“999 Windhoek”-d country =“Namibia”-d email =“test@gmail.com”-d mobile_number =“26487222225”-d package [package_uid] [] =“live”-d package [package_uid ] [] =“timeshift”-d package [valid_from] [] =“2018-05-24”-d package [valid_from] [] =“2018-05-24”-d package [duration] [] =“31 “-d package [duration] [] =”31“
这是我在C#中的代码:我在使用HttpWebRequest:
HttpWebRequest webRequest;
webRequest = (HttpWebRequest)WebRequest.Create("http://localhost/api/index.php");
String authHeaer = System.Convert.ToBase64String(System.Text.ASCIIEncoding.ASCII.GetBytes(userName + ":" + userPassword));
webRequest.Method = "POST";
webRequest.ContentType = "application/x-www-form-urlencoded";
string requestParams = "{\"method\" : \"addSubscriber\",\"first_name\" : '"+txt_fname.Text+"', \"last_name\" : \"'"+txt_lname.Text+"'\", \"address\":\"default\", \"postcode\":\"0000\", \"country\" : \"Namibia\", \"email\" :\"'"+txt_email.Text+"'\", \"mobile_number\" : \"'"+txt_cellno.Text+"'\", \"package_uid\" : \"live\", \"package_valid_from\" : \"'"+DateTime.Now+"'\", \"package_duration\" : \"'"+txtDuration.Text+"'\"}"; //format information you need to pass into that string ('info={ "EmployeeID": [ "1234567", "7654321" ], "Salary": true, "BonusPercentage": 10}');
webRequest.Headers[HttpRequestHeader.Authorization] = "Basic " + authHeaer;
byte[] byteArray = Encoding.UTF8.GetBytes(requestParams);
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("Client Added Succesfully");
答案 0 :(得分:0)
我将内容类型从json更改为urlencoded,并更改了一点格式,我可以获得所需的输出。
以下是新代码:
HttpWebRequest webRequest; webRequest =(HttpWebRequest)WebRequest.Create(" http://197.188.246.11/megatel/api/v1/index.php"); String authHeaer = System.Convert.ToBase64String(System.Text.ASCIIEncoding.ASCII.GetBytes(userName +":" + userPassword));
webRequest.Method = WebRequestMethods.Http.Post;
//"POST";
webRequest.Accept= "application/x-www-form-urlencoded";
webRequest.ContentType = "application/x-www-form-urlencoded";
string requestParams = "method=addSubscriber&first_name=" + txt_fname.Text +"&last_name=" + txt_lname.Text + "&address=" + txt_City.Text + "&postcode=" + txt_POBOX.Text + "&country=Brazil&email=" + txt_email.Text + "&mobile_number=" + txt_cellno.Text + "&package%5Bpackage_uid%5D%5B%5D=live&package%5Bpackage_uid%5D%5B%5D=timeshift&package%5Bvalid_from%5D%5B%5D=" + DateTime.Now.ToString("yyyy-MM-dd") + "&package%5Bvalid_from%5D%5B%5D=" + DateTime.Now.ToString("yyyy-MM-dd") + "&package%5Bduration%5D%5B%5D=" + txtDuration.Text + "&package%5Bduration%5D%5B%5D=" + txtDuration.Text + "";
webRequest.Headers[HttpRequestHeader.Authorization] = "Basic " + authHeaer;
byte[] byteArray = Encoding.UTF8.GetBytes(requestParams);
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();
}
}