AsyncHttpClient 没有调用我的 POST API
AsyncHttpClient is not calling my POST API
我是 Android 的新手,我正在使用 AsyncHttpClient
调用 POST API。但是 API 甚至没有被调用
下面是我的代码:
AsyncHttpClient client = new AsyncHttpClient();
client.addHeader("Key","random-key");
JSONObject body = new JSONObject();
body.put("clientId","random-client-id");
body.put("question",question);
HttpEntity entity = new StringEntity(body.toString());
client.post( getApplicationContext(),"http://localhost:3000/api/Chats/GetAnswer", entity,"application/json", new JsonHttpResponseHandler() {
@Override
public void onSuccess(int statusCode, Header[] headers, JSONObject response) {
List<List<Answer>> answers = new ArrayList<>();
try {
JSONArray answersJson = response.getJSONArray("answers");
} catch (JSONException e) {
e.printStackTrace();
}
}
@Override
public void onFailure(int statusCode, Header[] headers, String response, Throwable error) {
Toast toast = Toast.makeText(getApplicationContext(),"Unable to get answers for the question sent",Toast.LENGTH_SHORT);
toast.show();
}
});
`
有什么我做错的提示吗??
请将调试器放在您的方法中并确保它是否被调用,我认为您传递了错误的上下文值并且根据我的观点,它比 AsyncHttpClient 更适合 User Retrofit。
如果您正在与 Web 服务通信,请使用 Retrofit。
已解决,看来问题出在 AndroidManifest.xml
因为我正在使用互联网并调用外部 API,所以我不得不添加:
<uses-permission android:name="android.permission.INTERNET"/>
还有一件事。在本地工作和使用模拟器测试时,我们应该写
http://10.0.2.2:port-number/
而不是 http://localhost:port-number/
。因为android模拟器运行在虚拟机中。因此,localhost
将是模拟器自己的环回地址。
我是 Android 的新手,我正在使用 AsyncHttpClient
调用 POST API。但是 API 甚至没有被调用
下面是我的代码:
AsyncHttpClient client = new AsyncHttpClient();
client.addHeader("Key","random-key");
JSONObject body = new JSONObject();
body.put("clientId","random-client-id");
body.put("question",question);
HttpEntity entity = new StringEntity(body.toString());
client.post( getApplicationContext(),"http://localhost:3000/api/Chats/GetAnswer", entity,"application/json", new JsonHttpResponseHandler() {
@Override
public void onSuccess(int statusCode, Header[] headers, JSONObject response) {
List<List<Answer>> answers = new ArrayList<>();
try {
JSONArray answersJson = response.getJSONArray("answers");
} catch (JSONException e) {
e.printStackTrace();
}
}
@Override
public void onFailure(int statusCode, Header[] headers, String response, Throwable error) {
Toast toast = Toast.makeText(getApplicationContext(),"Unable to get answers for the question sent",Toast.LENGTH_SHORT);
toast.show();
}
});
`
有什么我做错的提示吗??
请将调试器放在您的方法中并确保它是否被调用,我认为您传递了错误的上下文值并且根据我的观点,它比 AsyncHttpClient 更适合 User Retrofit。 如果您正在与 Web 服务通信,请使用 Retrofit。
已解决,看来问题出在 AndroidManifest.xml
因为我正在使用互联网并调用外部 API,所以我不得不添加:
<uses-permission android:name="android.permission.INTERNET"/>
还有一件事。在本地工作和使用模拟器测试时,我们应该写
http://10.0.2.2:port-number/
而不是 http://localhost:port-number/
。因为android模拟器运行在虚拟机中。因此,localhost
将是模拟器自己的环回地址。