0

Unirestを使用したリクエストのみを受け入れるように見えるAndroidアプリケーションで、この「Words API」を使用しようとしています。

「信じられないほど」の定義のリクエスト例 (API で指定):

HttpResponse<JsonNode> response = Unirest.get("https://wordsapiv1.p.mashape.com/words/incredible/definitions")
  .header("X-Mashape-Key", "**********apikey************")
  .header("Accept", "application/json")
  .asJson();

doInBackground問題は、 in でユニレスト リクエストを実装することですAsyncTask

protected void OnPreExecute(){
    json_url = "https://wordsapiv1.p.mashape.com/words/incredible/definitions";

    //where does api key go?
}

protected String doInBackground(Void... params) {
        try {               
            // unirest goes here but how? 

            URL url = new URL(json_url);
            HttpURLConnection httpURLConnection = (HttpURLConnection)url.openConnection();
            InputStream inputStream = httpURLConnection.getInputStream();
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
            StringBuilder stringBuilder = new StringBuilder();
            while ((JSON_STRING = bufferedReader.readLine()) !=null)
                stringBuilder.append(JSON_STRING+"\n");

            bufferedReader.close();
            inputStream.close();
            httpURLConnection.disconnect();
            return stringBuilder.toString().trim();
        }catch (MalformedURLException e){
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }

内でリクエストを構成する方法が正確にわかりませんdoInBackground。これを行うことは可能ですか?

4

2 に答える 2

2

このコードはテストされていませんが、この問題を解決する方法についてのアイデアを提供するためのものです。

private class TastingUniRestAsync extends AsyncTask<String, Void, String> {

    protected String doInBackground(String... urls) {
        String pathToFile = urls[0];
        String responseResult = "";
        HttpResponse<JsonNode> response = Unirest.get(pathToFile)
                .header("X-Mashape-Key", "**********apikey************")
                .header("Accept", "application/json")
                .asJson();

        if(null != response){
            //convert your response to the data type you want. Here I am using string
            responseResult = //assign the manipulated Json string;
        }
        return responseResult
    }
    protected void onPostExecute(String responseResult){
        // You can assign it to TextView widget for example
        mTextView.setText(responseResult);
    }
}
于 2016-03-05T01:54:56.523 に答える