【问题标题】:Coding Android/Java connection to ASP.Net Web API编写与 ASP.Net Web API 的 Android/Java 连接
【发布时间】:2013-08-25 21:42:54
【问题描述】:

好的,我正在努力正确地构建这个 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 android json asp.net-web-api http-post


    【解决方案1】:

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

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

    因此,只需在您的 JavaCode 中使用 HttpGet 并删除 NameValuePair 内容,因为它在 GET 中不是必需的。除此之外,coude 看起来不错,但仅将其用于更改资源的操作。

    【讨论】:

    • 谢谢。我现在担心通过我的 web api 将东西写入我的数据库,这应该很有趣。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-02
    相关资源
    最近更新 更多