Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/183.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Studio中使用volley(JAVA)的API调用_Java_Android_Android Studio_Android Volley - Fatal编程技术网

Android Studio中使用volley(JAVA)的API调用

Android Studio中使用volley(JAVA)的API调用,java,android,android-studio,android-volley,Java,Android,Android Studio,Android Volley,我不确定我做错了什么。我对这一点非常陌生,只是直接开始尝试进行API调用。我正在尝试从rapidAPI检索一个简单项目的信息,我正在进行这个项目,以查看股票价格等等。我正在使用AndroidStudio的截取包,使我的ApicCalls检索JSON,并试图将其放入textView。我想象的工作方式是,我按下一个按钮,然后单击按钮,它运行代码以获取信息,然后在textView中显示响应。但是,当单击按钮时,不会发生任何事情。没有任何类型的错误或响应 private TextView mT

我不确定我做错了什么。我对这一点非常陌生,只是直接开始尝试进行API调用。我正在尝试从rapidAPI检索一个简单项目的信息,我正在进行这个项目,以查看股票价格等等。我正在使用AndroidStudio的截取包,使我的ApicCalls检索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);
    }
}

私有文本视图mTextViewResult;
专用请求队列MQUE;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTextViewResult=findviewbyd(R.id.text\u view\u result);
Button Button parse=findViewById(R.id.Button\u parse);
mQueue=Volley.newRequestQueue(this);
ButtonPasse.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
jsonParse();
}
});
}
私有void jsonParse(){
字符串url=”https://apidojo-yahoo-finance-v1.p.rapidapi.com/market/get-quotes?region=CA&lang=en&symbols=VEQT.TO";
JsonObjectRequest=newJSONObjectRequest(request.Method.GET,url,null,new Response.Listener()){
@凌驾
公共void onResponse(JSONObject响应){
试一试{
JSONArray JSONArray=response.getJSONArray(“结果”);
JSONObject结果=jsonArray.getJSONObject(0);
int marketPrice=result.getInt(“regularMarketPrice”);
mTextViewResult.setText(String.valueOf(marketPrice));
}捕获(JSONException e){
e、 printStackTrace();
}
}
},new Response.ErrorListener(){
@凌驾
公共无效onErrorResponse(截击错误){
mTextViewResult.setText(“+error.toString());
}
}){
@凌驾
公共映射getHeaders()引发AuthFailureError{
Map params=新的HashMap();
参数put(“x-rapidapi-host”,“apidojo-yahoo-finance-v1.p.rapidapi.com”);
参数put(“x-rapidapi-key”、“APIKEY”);
返回参数;
}
};
添加(请求);
}
}

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

您可以阅读如何从其

当前,您在使用错误的apikey调用api时收到的响应如下:

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

现在,在java代码中,您正在寻找基于键“result”的JSONArray,而响应当前只返回“message”。这就是什么也不发生的原因,如果您愿意,您可以尝试在消息的响应中查找值并获取错误消息。生成有效的rapidapi密钥并重试,祝您好运

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

您可以阅读如何从其

当前,您在使用错误的apikey调用api时收到的响应如下:

{
   "message": "Key doesn't exists"
}
现在,在java代码中,您正在寻找基于键“result”的JSONArray,而响应当前只返回“message”。这就是什么也不发生的原因,如果您愿意,您可以尝试在消息的响应中查找值并获取错误消息。生成有效的rapidapi密钥并重试,祝您好运