JSON 응답이있는 GET 메서드를 사용하여 webservice를 실행하려고했습니다. 안드로이드를 통해하지만 연결이 거부 된 예외를 던지고있다. 브라우저에서 URL을 눌러 응답을받을 수 있지만 응답을 가져 오는 데는 약 30 초가 걸립니다. 내 응용 프로그램을 실행할 때 응답을 기다리고 연결이 끊어지면 예외가 거부됩니다. 도와주세요. RESP() 메소드를HttpHostConnectException : 연결이 거부되었습니다.
public class ExecuteTask extends AsyncTask<String,Integer,String>{
@Override
protected String doInBackground(String... params) {
System.out.println("into async task");
String res=resp();
System.out.println("into execute task"+ res);
return res;
}
@Override
protected void onPostExecute(String result) {
pro.setVisibility(View.GONE);
//progess_msz.setVisibility(View.GONE);
}
}
RESP() 메서드를 호출합니다 (의 OnClick 방법으로 구성)
Login.java
class Login{
login.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
pro.setVisibility(View.VISIBLE);
new ExecuteTask().execute();
/* do{
pro.setVisibility(View.VISIBLE);
}while (response=resp())*/
/* if(response.contains("name")){
startActivity(new Intent(Login.this,Tab.class));
overridePendingTransition(R.anim.enter, R.anim.exit);
}
else if(response.contains("errorMessages")){
showPopUp();
}
else if(response.contains("<html>")||response.contains("site can't be reached")){
showerrorPopUp();
}
else{
showerrorPopUp();
}*/
}
});
비동기 작업 : 나 HTTP 연결 코드로 구성됩니다. public string resp() { System.out.println ("resp strt");
System.out.println("into resp");
HttpClient httpClient = new DefaultHttpClient();
HttpGet httpGet = new HttpGet(append(URL));
try {
HttpEntity httpEntity = httpClient.execute(httpGet).getEntity();
if (httpEntity != null) {
InputStream inputStream = httpEntity.getContent();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
final StringBuilder stringBuilder = new StringBuilder();
String cen = null;
while ((cen = bufferedReader.readLine()) != null) {
/* Intent intent=new Intent(Login.this,MainActivity.class);
startActivity(intent);*/
stringBuilder.append(cen + "n");
}
inputStream.close();
resp = stringBuilder.toString();
/*text.setText(resp);*/
System.out.println("response" + resp);
}
} catch (ClientProtocolException e) {
Toast.makeText(Login.this, e.toString(), Toast.LENGTH_LONG);
} catch (IOException e) {
e.printStackTrace();
Toast.makeText(Login.this, e.toString(), Toast.LENGTH_LONG);
}
System.out.println("resp end");
return resp;
}
APPEND() 메소드
public String append(String url){
url+=userName.getText().toString()+"/"+ password.getText().toString();
System.out.println("username"+userName.getText().toString());
return url;
}
**error**
W/System.err: org.apache.http.conn.HttpHostConnectException: Connection to http://180.211.68.232:8080 refused
W/System.err: at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:193)
W/System.err: at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:169)
W/System.err: at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:124)
W/System.err: at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:366)
W/System.err: at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:560)
W/System.err: at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:492)
W/System.err: at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:470)
W/System.err: at hello.com.navigationdrawer.Login.resp(Login.java:156)
W/System.err: at hello.com.navigationdrawer.Login$ExecuteTask.doInBackground(Login.java:248)
W/System.err: at hello.com.navigationdrawer.Login$ExecuteTask.doInBackground(Login.java:242)
W/System.err: at android.os.AsyncTask$2.call(AsyncTask.java:295)
W/System.err: at java.util.concurrent.FutureTask.run(FutureTask.java:237)
W/System.err: at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234)
W/System.err: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
W/System.err: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
W/System.err: at java.lang.Thread.run(Thread.java:818)
W/System.err: Caused by: java.net.ConnectException: failed to connect to /180.211.68.232 (port 8080): connect failed: ETIMEDOUT (Connection timed out)
W/System.err: at libcore.io.IoBridge.connect(IoBridge.java:124)
W/System.err: at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:183)
W/System.err: at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:452)
W/System.err: at java.net.Socket.connect(Socket.java:884)
W/System.err: at org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:124)
W/System.err: at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:149)
W/System.err: ... 15 more
W/System.err: Caused by: android.system.ErrnoException: connect failed: ETIMEDOUT (Connection timed out)
W/System.err: at libcore.io.Posix.connect(Native Method)
W/System.err: at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:111)
W/System.err: at libcore.io.IoBridge.connectErrno(IoBridge.java:137)
W/System.err: at libcore.io.IoBridge.connect(IoBridge.java:122)
W/System.err: ... 20 more
URL 최종 문자열 URL = "http://180.211.68.232:8080/JIRAservice-1.0-SNAPSHOT/rest/login/";
발리 라이브러리를 사용하십시오. –
정상적인 방법으로 텍스트를 게시하십시오. 코드 블록에 없습니다. 귀하의 문제를 읽으려면 스크롤을 풀어주십시오. – greenapps