我是Android和webservices的新手。我从未使用过post webservice。尝试如下,但它既没有成功也没有失败。
如果我使用高级休息客户端chrome扩展程序,我可以测试并且webservice工作正常,只需花费很多时间。
当尝试从代码运行时,它会立即显示 - 在调用webservices之后 - toast msg - >表示它没有调用Web服务。
花了2天但没有运气。有什么建议?
public void borrowBook(String barCode, String patronId)
{
final int DEFAULT_TIMEOUT = 200000 * 1000000000;
// Make RESTful webservice call using AsyncHttpClient object
AsyncHttpClient client = new AsyncHttpClient();
client.setTimeout(DEFAULT_TIMEOUT);
progress.setMessage("Please Wait...");
progress.setIndeterminate(false);
progress.setCancelable(false);
progress.show();
RequestParams params = new RequestParams();
Toast.makeText(getActivity().getApplicationContext(), "B4 calling webservice", Toast.LENGTH_LONG).show();
client.post("http://43.555.6.111:8081/SIPServices/SIc.svc/Checkout?barcode=B12&patron=thi", new TextHttpResponseHandler() {
@Override
public void onSuccess(int i, Header[] headers, String response) {
Toast.makeText(getActivity().getApplicationContext(), "Response: " + response, Toast.LENGTH_LONG).show();
Log.d("TAG", "Success");
}
@Override
public void onFailure(int statusCode, Header[] headers, String response, Throwable error) {
Toast.makeText(getActivity().getApplicationContext(), "Status code :" + statusCode + "errmsg : " + error.getMessage(), Toast.LENGTH_LONG).show();
Toast.makeText(getActivity().getApplicationContext(), "Unexpected Error occcured! [Most common Error: Device might not be connected to Internet or remote server is not up and running]", Toast.LENGTH_LONG).show();
Log.d("TAG", "Failure");
}
}
);
progress.dismiss();
Toast.makeText(getActivity().getApplicationContext(), "After calling webservice", Toast.LENGTH_LONG).show();
}
答案 0 :(得分:1)
您不会将参数设置为任何内容,也不会发送它们。 另外,您尝试拨打电话,但网址包含获取参数:" http://43.555.6.111:8081/SIPServices/SIc.svc/Checkout?barcode=B12&patron=thi"
还要考虑实现onStart方法并记录它,看它是否开始。
答案 1 :(得分:0)
这是我处理请求的自定义类。我在这里使用json,你可以返回并输入你想要的。你需要的只是
params:键和值的数组列表:条形码= B12& patron = thi
HashMap<String, String> mValueParams = new HashMap<>();
mValueParams.put("barcode", "B12");
mValueParams.put("patron", "thi");
JSONObject json = jsonParser.makeHttpRequest(url, "POST",mValueParams);
public JSONObject makeHttpRequest(String url,String method, HashMap params){
sbParams = new StringBuilder();
int i = 0;
for (String key : params.keySet()) {
try {
if (i != 0) {
sbParams.append("&");
}
sbParams.append(key).append("=")
.append(URLEncoder.encode(params.get(key), charset));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
i++;
}
if (method.equals("POST")) {
// request method is POST
try {
urlObj = new URL(url);
conn = (HttpURLConnection) urlObj.openConnection();
conn.setDoOutput(true);
conn.setRequestMethod("POST");
conn.setRequestProperty("Accept-Charset", charset);
conn.setReadTimeout(10000);
conn.setConnectTimeout(15000);
conn.connect();
paramsString = sbParams.toString();
wr = new DataOutputStream(conn.getOutputStream());
wr.writeBytes(paramsString);
wr.flush();
wr.close();
} catch (IOException e) {
e.printStackTrace();
}
} else if (method.equals("GET")) {
// request method is GET
if (sbParams.length() != 0) {
url += "?" + sbParams.toString();
}
try {
urlObj = new URL(url);
conn = (HttpURLConnection) urlObj.openConnection();
conn.setDoOutput(false);
conn.setRequestMethod("GET");
conn.setRequestProperty("Accept-Charset", charset);
conn.setConnectTimeout(15000);
conn.connect();
} catch (IOException e) {
e.printStackTrace();
}
}
try {
//Receive the response from the server
int status = conn.getResponseCode();
InputStream in = new BufferedInputStream(conn.getInputStream());
BufferedReader reader = new BufferedReader(new InputStreamReader(in, "iso-8859-1"), 8);
result = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
result.append(line);
}
} catch (IOException e) {
e.printStackTrace();
}
conn.disconnect();
// try parse the string to a JSON object
try {
jObj = new JSONObject(result.toString());
} catch (Exception e) {
Log.e("JSON Parser", "Error parsing data " + e.toString());
}
// return JSON Object
return jObj;
}