gpt4 book ai didi

java - 使用volley在Android Studio中调用API(JAVA)

转载 作者:太空宇宙 更新时间:2023-11-04 09:06:54 25 4
gpt4 key购买 nike

我不知道我做错了什么。我对此很陌生,直接尝试进行 API 调用。我正在尝试从rapidAPI 中检索我正在开发的一个简单项目的信息,以查看股票价格等。我正在使用 Android Studio 中的 volley 包进行 API 调用来检索 JSON 并尝试将其放入 textView 中。我想象的工作方式是,我按下一个按钮,然后单击该按钮后,它会运行代码来获取信息,然后在 TextView 中显示响应。但是,当单击该按钮时,什么也没有发生。没有任何错误或响应。


private TextView mTextViewResult;
private RequestQueue mQueue;


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

mTextViewResult= findViewById(R.id.text_view_result);
Button buttonParse= findViewById(R.id.button_parse);

mQueue= Volley.newRequestQueue(this);

buttonParse.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
jsonParse();
}
});

}
private void jsonParse(){
String url="https://apidojo-yahoo-finance-v1.p.rapidapi.com/market/get-quotes?region=CA&lang=en&symbols=VEQT.TO";
JsonObjectRequest request= new JsonObjectRequest(Request.Method.GET, url, null, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
JSONArray jsonArray= response.getJSONArray("result");

JSONObject result=jsonArray.getJSONObject(0);
int marketPrice= result.getInt("regularMarketPrice");

mTextViewResult.setText(String.valueOf(marketPrice));

} catch (JSONException e) {
e.printStackTrace();
}

}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
mTextViewResult.setText("" +error.toString());
}


}){
@Override
public Map<String,String> getHeaders() throws AuthFailureError{
Map<String,String> params= new HashMap<>();
params.put("x-rapidapi-host", "apidojo-yahoo-finance-v1.p.rapidapi.com");
params.put("x-rapidapi-key", "APIKEY");
return params;
}
};
mQueue.add(request);
}
}

最佳答案

根据您发布的内容,您确定您的 x-rapidapi-keyAPIKEY。很确定这是您问题的主要原因。只有在请求 header 中放入有效的 API key 后,您的 API 调用才会返回正确的预期响应。

您可以从他们的official docs here阅读如何生成rapidapi key

目前,您在使用错误 apikey 的 api 调用中收到的响应如下所示:

{
"message": "Key doesn't exists"
}

现在,在您的 java 代码中,您正在寻找基于键“结果”的 JSONArray,而响应当前仅返回“消息”。这就是没有任何反应的原因,您可以尝试查找消息响应中的值,并根据需要获取错误消息。生成有效的rapidapi key 并重试,祝你好运!

关于java - 使用volley在Android Studio中调用API(JAVA),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60132936/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com