从android向ASP.NET Web API发送JSON时出现问题

从android向ASP.NET Web API发送JSON时出现问题,android,json,asp.net-web-api,Android,Json,Asp.net Web Api,我正在尝试向asp.net web api控制器发送一些JSON数据,如下所示(从): JSONObject Parent=new JSONObject(); 母公司认沽权证(“enterpriseId”、“55e8a2a3-466d-46dc-95ce-bc5f2d3e7828”); List lst=new ArrayList(); 第1条增补(1); 第1条增补(2); 第1条增补(3); 第1条增补(4); 第1条增补(5); Parent.put(“itemids”,lst); Def

我正在尝试向asp.net web api控制器发送一些JSON数据,如下所示(从):

JSONObject Parent=new JSONObject();
母公司认沽权证(“enterpriseId”、“55e8a2a3-466d-46dc-95ce-bc5f2d3e7828”);
List lst=new ArrayList();
第1条增补(1);
第1条增补(2);
第1条增补(3);
第1条增补(4);
第1条增补(5);
Parent.put(“itemids”,lst);
DefaultHttpClient httpclient=新的DefaultHttpClient();
HttpPost httpPostRequest=新的HttpPost(Financial.AccountReviewUrl+“/testtest”);
Stringse;
se=新的StringEntity(Parent.toString());
//设置HTTP参数
httpPostRequest.setEntity(se);
setHeader(“接受”、“应用程序/json”);
setHeader(“内容类型”,“应用程序/json;字符集=utf-8”);
httpPostRequest.setHeader(“AuthenticationToken”,Financial.UserEncrypt);
Log.d(“json是”,Parent.toString());
Log.d(“使用encryp is”,Financial.UserEncrypt);
返回httpclient.execute(httpPostRequest);
我的web api操作:

        [HttpPost]
        public Object TestTestTest(Guid enterpriseId, List<int> itemIds)
        {
            var count = 0;
            if (itemIds != null)
                count = itemIds.Count;

            return enterpriseId.ToString() + ":" + count.ToString();

        }
[HttpPost]
公共对象测试(Guid enterpriseId,列表项ID)
{
var计数=0;
if(itemIds!=null)
count=itemIds.count;
返回enterpriseId.ToString()+“:”+count.ToString();
}
我一直收到一个404错误。我知道这个问题以前已经被问过很多次了,但是没有一个推荐的答案适合我。有什么想法吗


我明白了,而且。。。回答但不适用于我

您的API需要的是表单post而不是JSON对象。对于
POST
ing JSON对象,您将执行以下操作

// Code snippet for posting JSONObject
HttpPost httpPost = new HttpPost(serviceUrl);
MultipartEntity multipartEntity = new MultipartEntity();    
multipartEntity.addPart("data", new StringBody(jsonObject.toString()));
httpPost.setEntity(multipartEntity);
try {
    HttpResponse response = httpClient.execute(httpPost);
} catch (Exception ex) {
    // Log the error
}
// Code snippet for posting form data
HttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(serviceUrl);
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
for (int i = 0; i < params.length; i++) {
    nameValuePairs.add(new BasicNameValuePair(params[i], values[i]));
}
UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(nameValuePairs);
httpPost.setEntity(formEntity);
try {
    HttpResponse response = httpClient.execute(httpPost);
} catch (Exception ex) {
    // Log the error
}
因为您的代码需要URL编码的表单数据,所以您将按如下方式执行

// Code snippet for posting JSONObject
HttpPost httpPost = new HttpPost(serviceUrl);
MultipartEntity multipartEntity = new MultipartEntity();    
multipartEntity.addPart("data", new StringBody(jsonObject.toString()));
httpPost.setEntity(multipartEntity);
try {
    HttpResponse response = httpClient.execute(httpPost);
} catch (Exception ex) {
    // Log the error
}
// Code snippet for posting form data
HttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(serviceUrl);
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
for (int i = 0; i < params.length; i++) {
    nameValuePairs.add(new BasicNameValuePair(params[i], values[i]));
}
UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(nameValuePairs);
httpPost.setEntity(formEntity);
try {
    HttpResponse response = httpClient.execute(httpPost);
} catch (Exception ex) {
    // Log the error
}
//用于发布表单数据的代码段
HttpClient HttpClient=新的DefaultHttpClient();
HttpPost HttpPost=新的HttpPost(serviceUrl);
List nameValuePairs=新的ArrayList();
对于(int i=0;i
在第二个代码段中,您将构建两个
NameValuePair
对象,一个用于
enterpriseId
,另一个用于
itemids

PS:这些是代码片段,您必须根据自己的使用情况对其进行修改


希望这能有所帮助。

谢谢你的回答,我用了第二种方法,效果很好,但我需要发送Json。我尝试了第一种方法,并将告诉您结果是什么
MultipartEntity
class?好的。要发送JSON,我相信您还必须修改API.org.apache.http.entity.mime.MultipartEntitycould您能告诉我如何将一个列表放入
BasicNameValuePair