Я новичок в запросах Volley для Android. Мне удалось сделать сообщение и получить запросы на сервер и получить ответ.Выполнение запроса на волейбол с возвратным значением
public void getCardDetails() throws UnsupportedEncodingException, NoSuchAlgorithmException, InvalidKeyException {
StringRequest postRequest = new StringRequest(Request.Method.POST, url,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
// response
Log.d("Response from server","Customer Account"+response);
try {
results = signInActivity.splitQuery(response);
String encodedMessage = results.get("encodedMessage");
String serverSignature = results.get("signature");
//Log.d("CustomerAccount","encodedMessage:"+ encodedMessage);
String decodeMessage = security.decodeBase64(encodedMessage);
Log.d("CustomerAccount","DecodedMessage"+ decodeMessage);
customerDetailsXML = decodeMessage;
try {
String computedSignature = security.hashMac(decodeMessage, signature_key);
int responseCode = xmlHandler.getResponseCode(decodeMessage);
Log.d("CustomerAccount","Response Code: "+responseCode);
if (responseCode == 1001){
getCardBalance();
Log.d("CustomerAccount","Success");
}
} catch (InvalidKeyException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (JDOMException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
// error
Log.d("Error.Response", error.toString());
}
}
) {
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
HashMap<String, String> headers = new HashMap<>();
headers.put("Content-type", "application/x-www-form-urlencoded;charset=\"utf-8\"");
headers.put("Accept", "application/x-www-form-urlencoded");
headers.put("Cache-Control", "no-cache");
headers.put("Pragma", "no-cache");
headers.put("User-Agent", "Mozilla/5.0");
headers.put("Content-length", dataStream.toString());
return headers;
}
@Override
protected Map<String, String> getParams() {
Map<String, String> params = new HashMap<String, String>();
params.put("encodedMessage", encodedMessage_req);
params.put("signature", signature);
return params;
}
};
Volley.newRequestQueue(this).add(postRequest);
}
Приведенный выше запрос получает ответ сервера в формате String XML. Я хочу иметь возможность для метода, в котором я делаю запрос, чтобы вернуть XML, чтобы я мог манипулировать им, поскольку я хочу выйти из метода запроса.
Любые указатели на то, как этого достичь?
Создать класс интерфейса и получить ответ, то реализовать там, где вы выполняете апи – Vadivel
У вас уже есть 'customerDetailsXML', так где же вопрос? –
КлиентDetailsXML имеет значение null вне метода запроса волейбола. Если есть способ исправить это, тогда это будет хорошо. – pavlos