Я пытаюсь использовать HttpURLClient для отправки некоторых данных POST на сервер, используя класс HttpRestClient
, показанный ниже. При выполнении
conn.setDoInput(true);
Я получаю
java.lang.IllegalStateException: Already connected
Я удалил приложение и по-прежнему получаю ту же ошибку.
Во всем примере, который я видел, openConnection вызывается до setDoInput
. Если, как следует из его названия, openConnection
открывает соединение, оно никогда не должно использоваться до `setDoInput, правильно? Что мне не хватает?
Возможно, в какой-то момент он разбился перед выполнением disconnect
. Может быть, это и есть причина? Если да, как отключить старое соединение?
public class HttpRestClient {
static public int post(String urlStr, List<NameValuePair> data){
HttpURLConnection conn = null;
try {
URL url = new URL(urlStr);
conn = (HttpURLConnection) url.openConnection();
conn.setDoInput(true);
conn.setDoOutput(true);
conn.setRequestMethod("POST");
OutputStream os = conn.getOutputStream();
BufferedWriter writer = new BufferedWriter(
new OutputStreamWriter(os, "UTF-8"));
writer.write(getQuery(data));
writer.flush();
writer.close();
os.close();
InputStream is = conn.getInputStream();
String dude = readIt(is);
return 1;
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return 0;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return 0;
}
finally {
if(conn!=null) conn.disconnect();
}
}
}