2016-06-27 2 views
0

У меня есть метод POST в Web api, который возвращает байт [].Как получить содержание запроса POST?

[HttpPost] 
[ActionName("adduser")] 
public byte[] AddUser([NakedBody] byte[] data) { ... } 

Я делаю reuest от приложения mvc к этому методу.

[HttpPost] 
public ActionResult AddUser(RegistrationData data) 
{ 
    byte[] requestPcmsMessage = CryptographyHelper.GetPcmsMessageFromModel(data); 
    HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("http://localhost:10189/portal/adduser"); 
    request.Method = "POST"; 
    request.KeepAlive = true; 
    request.ContentLength = requestPcmsMessage.Length; 
    using (var requestStream = request.GetRequestStream()) 
    { 
     requestStream.Write(requestPcmsMessage, 0, requestPcmsMessage.Length); 
    } 
    HttpStatusCode statusCode; 
    string responseString = ""; 
    using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) 
    { 
     statusCode = response.StatusCode; 

     if (statusCode == HttpStatusCode.OK) 
     { 
      responseString = new StreamReader(response.GetResponseStream()).ReadToEnd(); 
     } 
    } 

    var responsePcmsMessage = CryptographyHelper.cryptoObject.ToBytes(responseString); 

    ...  

    return View(); 
} 

Но ответ я получаю в responsePcmsMessage не байты я пересылается с сервера. Итак, как я могу их получить?

+0

Вы можете проверить, если байт вы ожидаете в этом направлении? responseString = новый StreamReader (response.GetResponseStream()). ReadToEnd(); –

ответ

0

Я не уверен, было ли это полезно, но я вижу, что этот сайт содержит в основном все образцы кода. Все они имеют код, прикрепленный к нему в конце, который связан с возвратом ответа. Так, может быть, вы можете попробовать реализовать его подобным образом?

Проверьте некоторые примеры кода для Email Verification API. Я очень надеюсь, что это поможет вам немного.

+0

Добро пожаловать в StackOverflow и спасибо за ваш ответ. Было бы здорово, если бы вы могли добавить образец полезного кода с сайта в свой ответ. Если он не связан напрямую с проблемой, а только ресурсом, [это будет лучше как комментарий] (http://stackoverflow.com/help/privileges/comment), когда у вас будет 50 репутации;) – goto

0

это, как я использовал его, используя RestClient, я не знаю, если это работает для вас

// URL 
string URL = "http://localhost:10189/portal/"; 
// client URL     
var client = new RestClient(URL); 
// what you want to do 
var request = new RestRequest("adduser", Method.POST); 
//Login-Data - if necessary 
client.Authenticator = new HttpBasicAuthenticator("user", "password"); 
// the response you are looking for 
IRestResponse response = client.Execute(request); 
// return it to you 
return response.Content;