【发布时间】:2023-01-03 06:55:02
【问题描述】:
我一直试图让 Volley 从互联网上请求数据。代码如下。请原谅冗长的代码,这是一个快速而肮脏的测试,只是为了看看 Volley 是否有效。一旦我开始工作,我会清理它。
public static Option parseJSON(Context context, String stockTicker, String strikePrice, String expiration) {
final String apikey = "XXXX"; **//key removed just for StackOverflow, but it works**
String ticker = "&symbol=";
final String baseURL = "https://api.tdameritrade.com/v1/marketdata/quotes?";
Option option = new Option();
try {
SimpleDateFormat simpleDate = new SimpleDateFormat("MM/dd/yyyy");
SimpleDateFormat simpleDateforRequest = new SimpleDateFormat("MMddyy");
String formattedDate = simpleDateforRequest.format(simpleDate.parse(expiration));
String fullTicker = stockTicker + "_" + formattedDate + "C" + strikePrice;
ticker = ticker + fullTicker;
} catch (ParseException e) {
e.printStackTrace();
}
final String url = baseURL + apikey + ticker;
RequestQueue queue = Volley.newRequestQueue(context);
JsonArrayRequest request = new JsonArrayRequest(Request.Method.GET, url, null, new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
String jsonObject = response.toString();
Log.d("JSONRequestResponse", "Response: " + jsonObject);
}
}, error -> Log.d("JSONRequestResponse", "Error: " + error.toString()));
queue.add(request);
Log.d("JSON", "Request" + request + " URL: " + url);
return option; **//method doesn't create an option yet, but the problem comes well before this.**
}
问题是 JsonArrayRequest 中的 logd 都没有被触发,最后的只是一个空数组(“[]”),让我觉得 Volley 没有尝试连接。
- 我也尝试过使用 JsonObjectRequest 和 StringRequest
- 我已经将“<uses-permission android:name="android.permission.INTERNET'/> 添加到清单中,并尝试使用“ACCESS_NETWORK_STATE”
- 最终 URL 有效。我点击了它以获得最终的 logd,它将我带到一个包含正确信息的 JSON 页面
- gradle版本是1.2.1,应该是最新的
同样,我只是在测试 Volley 是否检索到 JSON,我还没有得到返回对象。在这一点上,我不知道它会是什么。任何帮助深表感谢
更新** 正如预期的那样,应用程序似乎没有连接到互联网。我使用以下方法查看是否存在连接并返回 false:
public static boolean isNetworkAvailable() {
Log.d("CheckPoint", "isNetworkAvailable first line");
final boolean[] availability = {false};
new Thread(new Runnable() {
@Override
public void run() {
try {
availability[0] = InetAddress.getByName("www.google.com").isReachable(5000);
} catch (UnknownHostException e) {
Log.d("CheckPoint", "isNetworkAvailable UnknownHost!");
} catch (IOException e) {
Log.d("CheckPoint", "isNetworkAvailable IOException!");
}
}
});
Log.d("CheckPoint", "Availability: " + availability[0]);
return availability[0];
}
【问题讨论】:
标签: java android json android-volley