0

我需要将一些值从我的 Android 应用程序发布到我的 Asp.Net Web Api。但我的 Web Api 中只有 null,你认为我的问题出在哪里?

我有这个 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;
    }

和我的网络 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();
                }
            }

        }
4

1 回答 1

2

您最好绑定到复杂类型。

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

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

那可行。如果出于某种原因,您不能拥有复杂类型,则需要确保请求消息正文是这样的。

=1&=2&=3&=30

它可能很奇怪,但这将绑定到 int[]。我不知道如何从 Android 提交此有效负载,但必须有办法。更简单的出路可能是使用复杂类型。顺便说一句,FromBody 只有简单类型才需要。

于 2013-05-28T14:34:41.643 回答