2013-05-28 2 views
0

Мне нужно опубликовать какое-то значение из моего приложения для Android в моем Asp.Net Web Api. но я только получаю null в своем веб-Api, где, по-вашему, моя проблема?Опубликовать значение от HttpPost Android до Asp.Net Web Api

У меня есть этот код для Android:

в MainActivity:

List<NameValuePair> IdsToSend = new ArrayList<NameValuePair>(); 
for (Message item : messages) { 
    IdsToSend.add(new BasicNameValuePair("messageIds", item.Id));    
} 
parser.sendPostRequest(UpdateMessageStatuseURL ,IdsToSend); 

в какой-то другой файл:

public void sendPostRequest(String url, List<NameValuePair> params) { 

     try { 
      DefaultHttpClient httpClient = new DefaultHttpClient(); 
      HttpPost httpPost = new HttpPost(url); 
      httpPost.setEntity(new UrlEncodedFormEntity(params)); 

      httpClient.execute(httpPost); 

     } catch (UnsupportedEncodingException e) { 
      e.printStackTrace(); 
     } catch (ClientProtocolException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     return; 
    } 

и мой Web Api:

public void Post([FromBody]int[] messageIds) 
     { 
      var dc = new SMSDataDataContext(); 
      foreach (var item in messageIds) 
      { 
       var message = dc.Messages.SingleOrDefault(x => x.Id == item); 
       if (message != null) 
       { 
        message.Statuse = 1; 
        dc.SubmitChanges(); 
       } 
      } 

     } 
+0

где null точно? – njzk2

+0

messageIds в Webapi Post – ePezhman

+1

Когда я завязываюсь с такими ошибками, я стараюсь настроить сеть между моим устройством разработки и рабочим столом и использовать скрипач или проводную акулу для просмотра пакетов. Затем вы можете просмотреть данные, которые публикуются. Не задумываясь над этим, я полагаю, что отправляемые данные отправляются не в правильном формате, я уверен, что это должно быть что-то вроде «messageIds [i]» вместо «messageIds» в главном но, как я уже сказал, это просто быстрый взгляд. Попробуйте заменить для каждого на цикл for и присвоить элементам массива значение. – Kennifer

ответ

2

You было бы лучше привязать к ex type.

public class YourModel 
{ 
    public int[] messageIds { get; set; } 
} 

public void Post(YourModel model) { ... } 

Это будет работать. Если по какой-либо причине вы не можете иметь сложный тип, вам необходимо обеспечить, чтобы тело сообщения запроса было таким.

=1&=2&=3&=30 

Это может быть странно, но это будет связывать с int []. Я не знаю, как вы можете отправить эту полезную информацию с Android, но должен быть способ. Более простой выход, вероятно, будет использовать сложный тип. BTW, FromBody потребуется только для простых типов.

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