Я пытаюсь вызвать веб-сервис в своем приложении С# ASP.Net MVC3. Это исходный код:
public string getCourseSchedule()
{
string url = "http://192.168.1.198:15014/ShoppingCart2/CourseSchedule";
string data = "Months&StatesMX&Zip=&Miles=&ProgramCodes=&EventCode=&PaginationStart=1&PaginationLimit=3";
byte[] bytes = Encoding.UTF8.GetBytes(data);
var myReq = (HttpWebRequest)WebRequest.Create(url);
myReq.Method = "POST";
myReq.ContentLength = data.Length;
myReq.ContentType = "application/x-www-form-urlencoded; charset=UTF-8";
string responseString = "";
using (Stream requestStream = myReq.GetRequestStream())
{
requestStream.Write(bytes, 0, bytes.Length);
}
using (HttpWebResponse response = (HttpWebResponse)myReq.GetResponse())
{
HttpStatusCode statusCode = response.StatusCode;
if (statusCode == HttpStatusCode.OK)
{
responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();
}
}
return responseString;
}
Код возвращает ошибку «400 Bad Request». Вот как я делаю это в javascript, и это работает.
Mexico_Schedule: {"Months": null,
"States": [{"State: "MX"}],
"Zip": "",
"Miles": "",
"ProgramCodes": null,
"EventCode": null
"PaginationStart": 1,
"PaginationLimit": 3
};
$.ajax({
async: true,
cache: false,
type: 'POST',
contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
url: "http://192.168.1.198:15014/ShoppingCart2/CourseSchedule",
data: JSON.stringify(Mexico_Schedule),
dataType: 'json',
success: function (data) {
console.log('Fired when the request is successful');
// Do something with results
}
});
Какие изменения мне нужно внести, чтобы версия C# заработала?
contentType: 'application/x-www-form-urlencoded;
и отправляете полезные данные запроса JSON. Или, может быть, веб-сервис, который вы пытаетесь вызвать, не уважает или не заботится о каких-либо стандартах протокола HTTP? - person Darin Dimitrov   schedule 11.09.2013application/x-www-form-urlencoded
и отправляете полезную нагрузкуapplication/json
, и это работает? WTF человек, вы можете сообщить об ошибке авторам этого дерьма. Я даже не могу поверить, что люди до сих пор пишут такую чушь и публикуют ее для публики. - person Darin Dimitrov   schedule 11.09.2013contentType: 'application/json'
, не работает? Может быть, я неправильно вас понял. Если вы указали этот тип контента в своей версии C#, убедитесь, что вы закодировали JSON полезные данные запроса с помощью сериализатора JSON. Но опять же, если вы говорите, что настройкаcontentType: 'application/json'
в вашей версии javascript не работает, то мой комментарий о дрянности этого сервиса полностью остается в силе. - person Darin Dimitrov   schedule 11.09.2013