如何将android连接到restful api

时间:2015-06-24 09:52:30

标签: android restful-authentication android-json


我正在创建一个应用程序,让人们登录,登录,注册,写东西并将其保存到数据库。
所以我决定选择Restful Api和Slim Framework。我在我的主机中发布它并通过Google Chrome调用Advanced Rest Client的扩展进行测试。一切都喜欢登录,登录,注册,wite的东西,更新它,删除它..工作正常。

例如: 我登录信息:
电子邮件:stark@gmail.com
密码:abc
然后结果是这样的。

{
error: false
name: "Kien"
email: "nguyenkien1402@yahoo.com"
apiKey: "fc2aee103c861026cb53fd8920b10adc"  
createdAt: "2015-06-24 00:28:01"
}


但是当我在我的Android应用程序中使用它时。我无法通过JSON连接和获取信息。 请告诉我如何解决这个问题。
谢谢。 抱歉我的英文,不是英文原文。

3 个答案:

答案 0 :(得分:0)

如果你的网址正在生成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);

答案 1 :(得分:0)

我解决了。 这是我的课程关于CRUD JSON。 谢谢。

答案 2 :(得分:0)

要连接到Restful API,必须执行以下步骤

  • 提供互联网访问权限
  • 必须建立http连接
  • 必须接受流输入

提供Internet访问权限   为了使互联网能够访问该应用程序,我们必须在文件“ AndroidManifest.xml”中添加这段代码

<uses-permission android:name="android.permission.INTERNET"/>

要执行第二第三步骤,我们必须创建一个新的Java类,因为当我们连接到Restful API时,它将在后台和MainActivity中运行不允许后台任务。

假设我们创建了一个新的Java类“ 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文件

然后类文件如下

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中提取所有内容。然后您可以根据需要使用这些信息。