繁体   English   中英

将Android / Java连接编码为ASP.Net Web API

[英]Coding Android/Java connection to ASP.Net Web API

好吧,我正在努力正确地构建此HttpPost事物...我用mvc 4构建了一个ASP.Net Web api,目前正在尝试从我的android应用程序中的一个控制器中提取数据。 这是我在android(java)中的代码,但我不知道如何正确编写它以与ASP.Net接口(例如标头,名称值对等)。 我也将发布控制器代码。

    DefaultHttpClient httpclient = new DefaultHttpClient();

    HttpPost httppost = new HttpPost(http://proopt.co.za.winhost.wa.co.za/api/Course);
    List<NameValuePair> nameValue = new ArrayList<NameValuePair>();
    nameValue.add(new BasicNameValuePair("", ""));
    httppost.setEntity(new UrlEncodedFormEntity(nameValue));
    httppost.setHeader("Content-type", "application/json");
    HttpResponse response = httpclient.execute(httppost);
    HttpEntity entity = response.getEntity();

而我的控制器如下:

// GET api/Course/5
public Course GetCourse(string id)
{
    Course course = db.Courses.Find(id);
    if (course == null)
    {
        throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.NotFound));
    }

    return course;
}

我用于http帖子的URL是http://proopt.co.za.winhost.wa.co.za/api/Course

请帮助我,谢谢。

更新2017

使用RESTful API与远程数据库接口。 您的客户端应用程序应使用一些基于令牌的身份验证,而Retrofit 2.0是使用远程REST API的绝佳库。

在您的Java代码中,您正在APS.NET/MVC网站中使用HttpPost ,您已经发布了GetCourse ,这是一个“获取”操作。 对于MVC控制器操作,必须添加[HttpPost] (或更确切地说,是[HttpPost, ActionName("Create")]以避免使用相同的命名get Action进行命名冲突)

但这并不真正符合RESTful设计。 为了获取数据,您应该始终使用GET方法。 仅在更新或创建资源(即删除,更新,插入)并使用“ PUT”替换资源时才使用“ POST”。 如果您使用JavaScript(即从网站上),则应使用POST而不是PUT,因为JavaScript只能处理POST和GET。

因此,只需在JavaCode中使用HttpGet并删除NameValuePair因为GET中不需要。 除此之外,该提示似乎还不错,但只能将其用于更改资源的操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM