我正在執行本教程中的應用程式:https : //youtu.be/xi94n-gwpWA Apk 顯示特定位置的 5 天天氣。
我正在使用 AccuWeather API ( https://developer.accuweather.com/ )
我已經完成了與視頻相同的操作,當我編譯 apk 時一切正常,但是當我單擊運行我的 apk 后生成的鏈接時,就像在 vid 上一樣(01:15,上面的鏈接)它給了我一個錯誤:
{"fault":{"faultstring":"Failed to resolve API Key variable request.queryparam.apikey","detail":{"errorcode":"steps.oauth.v2.FailedToResolveAPIKey"}}}
它應該是由 API 生成的 JSON 格式的資料,而不是那個錯誤。
這是我的代碼:
package com.example.pogoda;
import android.net.Uri;
import android.util.Log;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Scanner;
public class NetworkUtils {
private static final String TAG = "NetworkUtils";
private final static String WEATHERDB_BASE_URL=
"http://dataservice.accuweather.com/forecasts/v1/daily/5day/1385520";
private final static String API_KEY = "here is my api key";
private final static String PARAM_API_KEY = "api_key";
public static URL buildUrlForWeather(){
Uri builtUri = Uri.parse(WEATHERDB_BASE_URL).buildUpon()
.appendQueryParameter(PARAM_API_KEY, API_KEY)
.build();
URL url = null;
try {
url= new URL(builtUri.toString());
}catch (MalformedURLException e) {
e.printStackTrace();
}
Log.i(TAG, "buildUrlForWeather: url: " url);
return url;
}
public static String getResponseFromHttpUrl(URL url) throws IOException {
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
try {
InputStream in = urlConnection.getInputStream();
Scanner scanner = new Scanner(in);
scanner.useDelimiter("\\A");
boolean hasInput = scanner.hasNext();
if(hasInput) {
return scanner.next();
}else {
return null;
}
} finally {
urlConnection.disconnect();
}
}
如果有什么對你們來說不是很清楚,請提出問題。由于這是我在這里的第一篇文章,我可能會犯一些錯誤。
uj5u.com熱心網友回復:
我認為你在這里有兩個問題。
這是您正在使用的 api 端點的檔案。請注意,API Key 引數apikey不是api_key.
另一個問題是您不能使用隨機字串作為 api 密鑰。API 密鑰的目的是讓 api 提供者能夠授權、限制并最終對您的 api 使用量進行收費。您需要使用 accuweather 在創建帳戶時提供給您的 api 密鑰。這是他們的定價和套餐頁面。
您可以在此處閱讀有關該主題的更多資訊。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/415113.html
標籤:
