java - 编码 Android/Java 连接到 ASP.Net Web API

标签 java android json asp.net-web-api http-post

好吧,我正在努力正确地构建这个 HttpPost 东西......我用 mvc 4 构建了一个 ASP.Net web api,目前正在尝试从我的 android 应用程序中的一个 Controller 中提取数据。这是我在 android (java) 中的代码,但我不知道如何正确编写它以与 ASP.Net 交互(如 header 、名称值对等)。我也会发布 Controller 代码。

    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();

我的 Controller 如下:

// 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 与远程数据库交互。您的客户端应用程序应该使用一些基于 token 的身份验证,并且 Retrofit 2.0是用于使用远程 REST API 的绝佳库。

最佳答案

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

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

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

关于java - 编码 Android/Java 连接到 ASP.Net Web API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18392660/

相关文章:

android - admob 横幅未显示在弹出窗口中

javascript - JSON.解析: unexpected end of data (javascript)

Android - 无法从 onCreate() 方法访问 int

java - jsoup 用于带表格的非结构化 html 页面

java - 如何在 play 框架中使用 Json.toJson() 将 pojo 转换为 Json 时从 Json 中删除空值字符串?

c# - 对 ASP.NET Web 服务的 AJAX 请求 - 使用什么参数类型?

java - Spring Boot如何在服务器重启时轮换日志文件

java - 不同类型接口(interface)的两种实现——这不可能吗?

java - 如何在 Eclipse 中管理 git 子模块子项目?

java - 如何在 Java 上的 Mac OS X 中挂载网络驱动器?