サーバーからすべての Cookie を読み取りたいのですが、次のエラーが表示されます。
java.lang.IllegalStateException: Connection already established
接続する前に Cookie を読み取るにはどうすればよいですか? 接続を定義する前に Cookie 読み取りコードを配置しようとしましたが、接続を確立する接続を定義するまで機能しません。これにより、Cookie の読み取りが妨げられます...何か助けてください。
これが私のコードです:
package com.example.read;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.util.List;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class MainActivity extends Activity {
List<String> cookies = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btn = (Button)findViewById(R.id.button1);
btn.setOnClickListener(l);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
View.OnClickListener l = new View.OnClickListener() {
public void onClick(View v) {
EditText edt = (EditText)findViewById(R.id.editText1);
if(!edt.getText().toString().equals("")){
readData(edt.getText().toString());
}
}
};
void readData(String text){
URL url;
HttpURLConnection conn;
DataOutputStream out;
DataInputStream in;
try{
url = new URL("http://"+text);
conn = (HttpURLConnection)url.openConnection();
if(cookies==null){
conn.getHeaderField("Set-Cookie");
}
if(cookies!=null){
for(String cookie : cookies){
conn.setRequestProperty("Cookie", cookie);
}
}
conn.setDoOutput(true);
String post = "mobile_app="+URLEncoder.encode("1","UTF-8");
out = new DataOutputStream(conn.getOutputStream());
out.writeBytes(post);
out.flush();
out.close();
in = new DataInputStream(conn.getInputStream());
String line = "";
String data = "";
while((line=in.readLine())!=null){
data+=line;
}
TextView tv = (TextView)findViewById(R.id.textView1);
tv.setText(data);
} catch(Exception e){
System.out.println(e);
TextView tv = (TextView)findViewById(R.id.textView1);
tv.setText(e.toString());
}
}
}