Witam.
Mam mały problem gdyż kod (potencjalnie wygląda na dobry) zwraca błąd -1 przy próbie połączenia:
public String CallFunction(String resourceName, String functionName, Mta_args args)
{
String requestContent = args.ConvertToJSONString();
// try
// {
String requrl = "http://" + this.ip + ":" + this.port + "/" + resourceName + "/call/" + functionName;
String result = this.DoPOSTRequest(requrl, requestContent);
return result;
//}
/*catch (WebException ex)
{
}*/
}
private String DoPOSTRequest(String url, String json)
{
try
{
HttpURLConnection req =(HttpURLConnection) new URL(url).openConnection();
req.setRequestMethod("POST");
req.setInstanceFollowRedirects(true);
req.setDoOutput(true);
req.setReadTimeout(2000);
if (!isNull(this.konto.toString()) && !isNull(this.haslo.toString()))
{
Base64 decoder = new Base64();
String decodedBytes = decoder.encode(this.konto+ ":" + this.haslo);
req.setRequestProperty("Authorization","Basic " + decodedBytes);
}
req.setRequestProperty ("Content-Type", "application/x-www-form-urlencoded");
OutputStreamWriter writer = new OutputStreamWriter(req.getOutputStream());
writer.write(json);
writer.close();
BufferedReader resp = new BufferedReader(new InputStreamReader(req.getInputStream()));
//DataInputStream resp = new DataInputStream(req.getInputStream());
int code = req.getResponseCode();
if (code != 200)
return convertFormat(code);
String result = resp.readLine();
if (result.startsWith("error"))
throw new Exception(result);
return result;
}
catch (NullPointerException ex)
{
return "NE: " + ex.getCause();
}
catch (MalformedURLException e)
{
return "MU: " + e.getMessage();
}
catch (Exception ex)
{
return "E: " + ex.getMessage();
}
}
linijka która zwraca błąd jest tu: (fragment z kodu powyżej)
if (code != 200)
return convertFormat(code);
Oraz 2 pytanie:
Jak zrobić by wywołanie powyższego nie zacinało aplikacji (np w trakcie timedout). Aplikacja (pod Android) na naciśnięciu przycisku zacina się do czasu aż nie wyskoczy jakiś błąd (np timedout w przypadku zablokowania połączenia przez zaporę sieciową). W kodzie mam dodane by by pokazywało się okienko ładowania lecz co z tego jak aplikacja po prostu się zacina na chwile. Więc jak to zrobić by to się nie działo?
Dziękuje z góry za każdą podpowiedz i pomoc : )
Pozdrawiam