如何将 android 连接到 restful api
how to connect android to restful api
我正在制作一个应用程序,让人们可以登录、登录、注册、写一些东西并将其保存到数据库中。
所以我决定选择 Restful Api 和 Slim Framework。我将它发布在我的主机上,并通过扩展 google chrome 调用 Advanced Rest Client 进行测试。登录、登录、注册、写东西、更新、删除等一切都很好。
例如:
我登录信息:
电子邮件:stark@gmail.com
密码:abc
那么结果就是这样的。
{
error: false
name: "Kien"
email: "nguyenkien1402@yahoo.com"
apiKey: "fc2aee103c861026cb53fd8920b10adc"
createdAt: "2015-06-24 00:28:01"
}
但是当我在我的 android 应用程序中使用它时。我无法通过 JSON 连接和获取信息。
请告诉我如何解决这个问题。
谢谢你。
对不起我的英语,它不是母语。
如果您的 url 正在生成 json 响应,那么您必须阅读它。
public static String sendGet(String url) throws Exception {
URL obj = new URL(url);
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
// optional default is GET
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
System.out.println("\nSending 'GET' request to URL : " + url);
System.out.println("Response Code : " + responseCode);
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
return response.toString(); //here is your response which is in string type, but remember that the format is json.
}
然后将您的回复转换为 json:
JsonObject obj = new JsonObject(response);
我解决了。
这取决于我 class 关于 CRUD JSON。
谢谢。
要连接到 restful API,您必须执行以下步骤
- 提供互联网访问权限
- 必须做http连接
- 必须接受流输入
授予 Internet 访问权限
为了让应用程序可以访问互联网,我们必须在文件“AndroidManifest.xml”
中添加这段代码
<uses-permission android:name="android.permission.INTERNET"/>
要执行 second 和 third 步骤,我们必须创建一个新的 java class我们正在连接到 restful API,它会在后台 运行 而 MainActivity 不允许后台任务。
假设我们创建一个新的 java class "fetchData" 来从 API 获取数据。
要完成剩下的任务,我们必须使用这段代码
URL url = new URL(API ADDRESS);
HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
InputStream inputStream = httpURLConnection.getInputStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
现在您可以使用 "Bufferedreader.readLine()"
获取 JSON 文件
然后 class 文件看起来像这样
import android.os.AsyncTask;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
public class fetchData extends AsyncTask<Void,Void,Void> {
String data ="";
String dataParsed = "";
String singleParsed ="";
@Override
protected Void doInBackground(Void... voids) {
try {
URL url = new URL("https://api.myjson.com/bins/k3p10");
HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
InputStream inputStream = httpURLConnection.getInputStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
String line = "";
while(line != null){
line = bufferedReader.readLine();
data = data + line;
}
JSONArray JA = new JSONArray(data);
for(int i =0 ;i <JA.length(); i++){
JSONObject JO = (JSONObject) JA.get(i);
singleParsed = "Name:" + JO.get("name") + "\n"+
"email:" + JO.get("email") + "\n"+
"Error:" + JO.get("error") + "\n";
dataParsed = dataParsed + singleParsed +"\n" ;
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
}
}
从 JSON 数组中,您可以提取从 API 中获得的 JSON 中的所有内容。然后您可以根据您的要求使用这些信息。
我正在制作一个应用程序,让人们可以登录、登录、注册、写一些东西并将其保存到数据库中。
所以我决定选择 Restful Api 和 Slim Framework。我将它发布在我的主机上,并通过扩展 google chrome 调用 Advanced Rest Client 进行测试。登录、登录、注册、写东西、更新、删除等一切都很好。
例如:
我登录信息:
电子邮件:stark@gmail.com
密码:abc
那么结果就是这样的。
{
error: false
name: "Kien"
email: "nguyenkien1402@yahoo.com"
apiKey: "fc2aee103c861026cb53fd8920b10adc"
createdAt: "2015-06-24 00:28:01"
}
但是当我在我的 android 应用程序中使用它时。我无法通过 JSON 连接和获取信息。
请告诉我如何解决这个问题。
谢谢你。
对不起我的英语,它不是母语。
如果您的 url 正在生成 json 响应,那么您必须阅读它。
public static String sendGet(String url) throws Exception {
URL obj = new URL(url);
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
// optional default is GET
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
System.out.println("\nSending 'GET' request to URL : " + url);
System.out.println("Response Code : " + responseCode);
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
return response.toString(); //here is your response which is in string type, but remember that the format is json.
}
然后将您的回复转换为 json:
JsonObject obj = new JsonObject(response);
我解决了。 这取决于我 class 关于 CRUD JSON。 谢谢。
要连接到 restful API,您必须执行以下步骤
- 提供互联网访问权限
- 必须做http连接
- 必须接受流输入
授予 Internet 访问权限 为了让应用程序可以访问互联网,我们必须在文件“AndroidManifest.xml”
中添加这段代码<uses-permission android:name="android.permission.INTERNET"/>
要执行 second 和 third 步骤,我们必须创建一个新的 java class我们正在连接到 restful API,它会在后台 运行 而 MainActivity 不允许后台任务。
假设我们创建一个新的 java class "fetchData" 来从 API 获取数据。 要完成剩下的任务,我们必须使用这段代码
URL url = new URL(API ADDRESS);
HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
InputStream inputStream = httpURLConnection.getInputStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
现在您可以使用 "Bufferedreader.readLine()"
获取 JSON 文件然后 class 文件看起来像这样
import android.os.AsyncTask;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
public class fetchData extends AsyncTask<Void,Void,Void> {
String data ="";
String dataParsed = "";
String singleParsed ="";
@Override
protected Void doInBackground(Void... voids) {
try {
URL url = new URL("https://api.myjson.com/bins/k3p10");
HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
InputStream inputStream = httpURLConnection.getInputStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
String line = "";
while(line != null){
line = bufferedReader.readLine();
data = data + line;
}
JSONArray JA = new JSONArray(data);
for(int i =0 ;i <JA.length(); i++){
JSONObject JO = (JSONObject) JA.get(i);
singleParsed = "Name:" + JO.get("name") + "\n"+
"email:" + JO.get("email") + "\n"+
"Error:" + JO.get("error") + "\n";
dataParsed = dataParsed + singleParsed +"\n" ;
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
}
}
从 JSON 数组中,您可以提取从 API 中获得的 JSON 中的所有内容。然后您可以根据您的要求使用这些信息。