gpt4 book ai didi

android - BasicNetwork.performRequest - 意外的响应代码 400 在 android 6.0.1 但不是在模拟器上

转载 作者:行者123 更新时间:2023-11-29 22:46:28 24 4
gpt4 key购买 nike

我在我的 android samsung 上尝试下面的代码,它给出了错误。 (我要获取 channel 属性)

String URL = "https://www.googleapis.com/youtube/v3/search?hl=tr_TR&part=snippet&q=" + channel + "&type=channel&safeSearch=moderate&maxResults=1&key=xxxxxx";
StringRequest stringRequest = new StringRequest(StringRequest.Method.GET, URL, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try {
JSONObject jsonObject = new JSONObject(response);
JSONArray jsonArray = jsonObject.getJSONArray("items");
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject item = jsonArray.getJSONObject(i);
JSONObject snippet = item.getJSONObject("snippet");
String channelId = snippet.getString("channelId");
//getVideo(channelId);
}

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


}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
// Log.e("Error", error.getMessage());
// Toast.makeText(MainActivity.this, error.getMessage(), Toast.LENGTH_SHORT).show();
}
}

);
RequestQueue requestQueue = Volley.newRequestQueue(MainActivity.this);
requestQueue.add(stringRequest);

它给出了这个错误:

E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.cocuklaricin.junioryoutube, PID: 13820
java.lang.NullPointerException: println needs a message
at android.util.Log.println_native(Native Method)
at android.util.Log.e(Log.java:334)
at com.cocuklaricin.junioryoutube.MainActivity$1$2.onErrorResponse(MainActivity.java:127)
at com.android.volley.Request.deliverError(Request.java:617)
at com.android.volley.ExecutorDelivery$ResponseDeliveryRunnable.run(ExecutorDelivery.java:104)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:158)
at android.app.ActivityThread.main(ActivityThread.java:7225)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
I/qtaguid: Untagging socket 45
E/Volley: [4518] BasicNetwork.performRequest: Unexpected response code 400 for https://www.googleapis.com/youtube/v3/search?hl=tr_TR&part=snippet&q=Cartoon Network Türkiye&type=channel&safeSearch=moderate&maxResults=1&key=xxxx

但是当我在我的模拟器上尝试时,它工作正常。

有什么区别?我该如何解决这个错误?

提前致谢

最佳答案

在使用 error.getMessage() 之前尝试检查 null,如下所示

   new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
if(error.getMessage==null){
Toast.makeText(MainActivity.this, "Failed to retrieve data", Toast.LENGTH_LONG).show();
}
else{

Toast.makeText(MainActivity.this, error.getMessage().toString(), Toast.LENGTH_LONG).show();
}

});

也不要忘记像 error.getMessage().toString();

那样把它转换成字符串

更新

请确保您的 url 不应包含任何空格,以便 在我看来,您可以将输入 channel 中的任何空格替换为 %20,例如 Cartoon%20Network%20Türkiye那么这个 url 将有效。

关于android - BasicNetwork.performRequest - 意外的响应代码 400 在 android 6.0.1 但不是在模拟器上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58353532/

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