决定在Android下尿尿试试,于是出现了非常多的问题。谁不难回答请。
我正在尝试使应用程序使用特定的 API,使用 进行通信json
,但我无法编写一个类,例如在 sharp 上,我向其传递地址、参数并执行POST
请求,例如,像这里https://stackoverflow.com/questions/4015324/http-request-with-post。
据我了解,Android应用程序无法执行POST
来自常规方法的请求,您需要使用它AsyncTask<>
-我什么都不懂,从语法本身开始,即调用类型方法时是否枚举doInBackground(String... params)
参数或者是什么?
总而言之String...
doInBackground(str1, str2, str3)
我不是要你为我写现成的代码,我是要你帮助我理解如何POST
在 Android 中处理请求的原理,至少一个具体的例子:POST (json)
以相同的方式发送和接收响应json
以及一点理论,请))。
AsyncTask
最好尝试一次,然后忘记它们。也一样HttpUrlConnection
。目前,Retorofti被认为是与 Android 中的 Rest 服务器交互的主要库。官网上有例子。第三方资源上也有不少,例如这里。我只会给出一个示例POST
请求。为此,我们需要一个从服务器接收到的 Json 转换成的模型类,一个请求主体的模型类,以及一个带有特殊注解方法的接口。
假设服务器有一个向用户添加邮政地址的方法,并返回一些有关操作状态的信息。在请求正文中,服务器接受常规字符串数组,并将结果作为 Json 返回。
首先,我们创建一个服务器响应模型(声明为字段是
public
为了减少代码,在实际应用中最好使用private
+get/set方法):现在我们创建一个接口,通过它与服务器进行交互。
方法上面的注解表示
POST
请求将被执行,注解@Body
表明这个对象应该在请求体中传递。接下来,您需要创建一个服务器。它是这样完成的:
通过调用该方法,
enqueue()
您告诉请求异步执行。最后,结果会传到传递过来的回调中进行处理。基本上就是这样。这个库不仅限于一个POST
请求,它可以完成开发客户端-服务器应用程序所需的一切。要为您的项目添加改造,您需要
build.gradle
添加以下内容:这是另一个带有现成活动的示例,该活动将简单的 json 发送到服务器。从我的回答中复制:
例如,您可以在 PHP 中处理请求:
恕我直言,Retrofit 是一个沉重但不是最好的文档库,专注于使用自己的 API 与 Web 门户一起工作。至少,网络上的所有示例都说明了如何使用它们。如果您需要通过 http 传输 10 个字符的字符串,而无需稍后创建一堆不必要的代码,HttpUrlConnection + AsyncTask 就可以了。
下面是一个发送请求的简单示例。params 只是一个无限的字符串数组。HttpPost 采用一个字符串,它是服务器上脚本的地址。
BasicNameValuePair 只是您要发送的内容的键值列表。响应是服务器脚本给我们的。没有必要在 AsyncTask 中执行此操作。但通常他们会这样做。由于这不是即时操作,最好在新线程中处理它。如果您需要具体澄清某些内容,请写在评论中。我会回答
现在关于 json 解析。响应 - 带有 json 的字符串
可以在此处看到我们正在解析的 json 本身的示例。纯粹为了理解格式http://contester.ddns.is74.ru:84/Get_all_group_list.ashx