发布使用web Api从android失败

时间:2012-11-16 15:16:44

标签: android jquery cordova asp.net-web-api

我正在创建一个简单的Android应用程序,它使用JSON格式的POST将名称和电话号码发送到asp.net中的webApi MVC4,并使用SQL服务器作为数据库。问题是我似乎无法正确使用它,当我向webapi发送信息时,它从不向我的数据库发布任何内容。

当我使用fiddler发送JSON时,它已经工作了,但我不明白问题是什么。请帮忙,我已经被困了一段时间了。

这是我的Jquery ajax客户端代码:

$.ajax({
      type: "POST",
      data: {"Name" : "JUJI", "PhoneNumber" : 999},
      url: "http://127.0.0.1:52380/api/Default1",
      dataType: "json",
      success:function(response){
        alert("yupie");
        console.log(response);
    },
    error:function(response){
        alert("no response");
        console.log(response);
    }
    });

这是webApi中服务器端的模型代码:

public class Contact
{
    public int ID { get; set; }
    public string Name { get; set; }
    public double PhoneNumber { get; set; }

}

我服务器端的控制器:

// POST api/Default1
        public HttpResponseMessage PostContact(Contact contact)
        {

            if (ModelState.IsValid)
            {

                db.Contacts.Add(contact);
                db.SaveChanges();

                HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.Created, contact);
                response.Headers.Location = new Uri(Url.Link("DefaultApi", new { id = contact.ID }));
                return response;
            }
            else
            {
                return Request.CreateResponse(HttpStatusCode.BadRequest);
            }
        }

2 个答案:

答案 0 :(得分:0)

您正在调用localhost(127.0.0.1),在这种情况下,它指的是您运行代码的设备或模拟器。因此,手机正试图与自己交谈,显然您的服务器端代码不会在设备上运行。您需要将127.0.0.1替换为运行servlet的PC的IP地址或服务器名称。

答案 1 :(得分:0)

如果您在与Android模拟器相同的计算机上运行服务器,则使用10.0.2.2作为服务器IP。