2015-03-01 3 views
0

У меня есть проект апи, с помощью метода пост, который выглядит следующим образом:Тест мой метод пост апи

[Route("api/PostReviewedStudyData")] 
[HttpPost] 
public bool PostReviewedStudyData(string jsonObject) 
{ 
    //some stuff 
    return true; 
} 

Я не могу показаться, чтобы быть в состоянии проверить это я написал метод испытания, как это :

HttpWebRequest httpWReq = (HttpWebRequest)WebRequest.Create(@"http://localhost:60604/api/PostReviewedStudyData"); 

ASCIIEncoding encoding = new ASCIIEncoding(); 
string postData = "Some json parsed object"; 
byte[] data = encoding.GetBytes(postData); 

httpWReq.Method = "POST"; 
httpWReq.ContentType = "application/x-www-form-urlencoded"; 
httpWReq.ContentLength = data.Length; 

using (Stream stream = httpWReq.GetRequestStream()) 
{ 
    stream.Write(data, 0, data.Length); 
} 

HttpWebResponse response = (HttpWebResponse)httpWReq.GetResponse(); 

string responseString = new StreamReader(response.GetResponseStream()).ReadToEnd(); 

Я получаю ошибку 404. Является ли мой метод Api плохо написанным или мой метод тестирования?

+0

'HTTP: // локальный: 60604/API/Method' должен быть' HTTP: // локальный: 60604/api/PostMethod' –

+0

Это, я скопировал это неправильно из моего кода. Спасибо. – tal

+1

Очень простой способ тестирования маршрутов - использовать веб-прокси, как Fiddler! –

ответ

1

Есть пара вещей:

HttpWebRequest httpWReq =HttpWebRequest)WebRequest.Create(@"http://localhost:60604/api/PostMethod"); 

ASCIIEncoding encoding = new ASCIIEncoding(); 
string postData = "=Some json parsed object"; 
byte[] data = encoding.GetBytes(postData); 

httpWReq.Method = "POST"; 
httpWReq.ContentType = "application/x-www-form-urlencoded"; 
httpWReq.ContentLength = data.Length; 

using (Stream stream = httpWReq.GetRequestStream()) 
{ 
    stream.Write(data, 0, data.Length); 
} 

HttpWebResponse response = (HttpWebResponse)httpWReq.GetResponse(); 

изменить также siganture:

public bool PostReviewedStudyData([FromBody] string jsonObject) 
+0

Таким образом, параметр jsonObject получает значение null. – tal

+0

Код, который я написал, работает, я запускаю его как тест. если у вас есть другой вопрос, пожалуйста, обновите новый код в своем вопросе как редактирование. –

+0

Royi. Я получаю null как параметр, когда я использую ваш код точно и после проверки того, что строка Json, которую я отправляю, не пуста. – tal

Смежные вопросы