gpt4 book ai didi

Android Volley 错误抛出 200 状态代码

转载 作者:行者123 更新时间:2023-11-29 02:42:10 25 4
gpt4 key购买 nike

我正在尝试创建一个新闻查看部分,作为我研究生学习的最终任务。这个 (UserNewsActivity) 所做的是通过调用我的方法在创建时获取数据,如下所示:

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

InstanciateListViewValues();
}

并从我在 Asp .Net Web Api 2 中创建的 api 中获取数据(因为 mvc 中也有 web 部件)。

然后应将获取的数据存储在“Global.NewsItemsList”中的静态变量中,然后填充我的(自定义)ListView与数据。问题是我不断收到 200 响应错误:

   E/Volley: [110] BasicNetwork.performRequest: Unexpected response code 200 for  http://192.168.56.1:5000/News/GetNews

I/System.out: NetworkError

有时它会起作用 :S我 100% 确定我正在获取正确的数据(在浏览器中检查,200 状态(正常),检查底部链接),我以前在项目中以同样的方式使用 volley 来获取更多数据,并且它在 100% 的时间内都有效。方法看起来像这样:

   private void InstanciateListViewValues() {
if (Global.NewsItemsList == null) {
final String url = ApiLink + "/News/GetNews";
RequestQueue queue = Volley.newRequestQueue(this);

JsonObjectRequest getRequest = new JsonObjectRequest(Request.Method.GET, url, null,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
Iterator<String> keys = response.keys();
String str_Name = keys.next();
String jsonString = response.optString(str_Name);

Gson gson = new Gson();
Global.NewsItemsList = gson.fromJson(jsonString, new TypeToken<List<NewsDetailsViewModel>>() {
}.getType());

setAdapterData();
} catch (Exception e) {
System.out.println(e.getMessage());
Toast.makeText(UserNewsActivity.this, "An error occured, please try later.",
Toast.LENGTH_SHORT).show();
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(UserNewsActivity.this, "An error occured, please try later.",
Toast.LENGTH_SHORT).show();

//System.out.println(error.getMessage());//if left uncommented will break app
if (error instanceof TimeoutError || error instanceof NoConnectionError) {
System.out.println("TimeoutError || NoConnectionError");
} else if (error instanceof AuthFailureError) {
System.out.println("AuthFailureError");
} else if (error instanceof ServerError) {
System.out.println("ServerError");
} else if (error instanceof NetworkError) {
System.out.println("NetworkError");
NetworkResponse response = error.networkResponse;
if (error instanceof ServerError && response != null) {
try {
String res = new String(response.data,
HttpHeaderParser.parseCharset(response.headers, "utf-8"));

JSONObject obj = new JSONObject(res);
System.out.println(obj.toString());
} catch (UnsupportedEncodingException e1) {
System.out.println(e1.getMessage());
e1.printStackTrace();
} catch (JSONException e2) {
System.out.println(e2.getMessage());
e2.printStackTrace();
}
catch (Exception e3) {
System.out.println(e3.getMessage());
e3.printStackTrace();
}
}
} else if (error instanceof ParseError) {
System.out.println("ParseError");
}
}
}
);
queue.add(getRequest);
} else {
setAdapterData();
}
}

如果值得注意,我使用 VisualStudio 在本地运行我的服务,然后使用 IISExpress 代理我的端口,最后使用 Genymotion 作为模拟器。

为了保持这个问题的清晰,这里是 pastebin 的链接,带有 Global 和 NewsItemsList 类以及来自 Web api 的响应:https://pastebin.com/5Za6yLDP

最佳答案

海吉·卡达吉
我只是在看你的代码,但最引起我注意的是“如果值得注意的话,我正在使用 VisualStudio 在本地运行我的服务,然后使用 IISExpress 代理我的端口,最后使用 Genymotion 作为模拟器。”
我遇到过如果您使用 iisexpress-proxy 的第一个地址(在我的例子中是 192.168.0.1),有时该代理将无法工作,因为这通常是网关地址。
为了正确测试这个问题,请看一下这个问题(Configure IIS Express for external access to VS2010 project),然后它应该可以正常工作(至少它对我有用 :D)。

关于Android Volley 错误抛出 200 状态代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43356026/

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