Opa!
Estou tentando fazer a conexão entre o android e um servlet, mas não funciona. No log window do android, sempre da o seguinre erro: Conection Refused.
Código Android
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package org.me.gustavoandroid;
/**
*
* @author gustavo
*/
import java.io.DataOutputStream;
import java.io.OutputStream;
import java.net.URL;
import java.net.URLConnection;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import java.net.HttpURLConnection;
public class SincronizarServidor extends Activity {
private static final String TAG = "Test";
protected static EditText username;
protected static EditText password;
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.login);
}
public void onClickBtSincronizarServidor(View v) {
EditText username = (EditText) findViewById(R.id.txtUsuario);
EditText password = (EditText) findViewById(R.id.txtSenha);
String uname = username.getText().toString();
networkthread ob = new networkthread(uname);
}
class networkthread implements Runnable {
private static final String TAG = "Test";
String uname;
public networkthread(String uname) {
this.uname = uname;
Thread t = new Thread(this);
t.start();
}
public void run() {
Log.v(TAG, "---------> INICIO");
try {
URL urlObj = new URL("http://localhost:8080/Gustavo-Android-Servlet/Servidor");
String x = (String) (Object) urlObj;
HttpURLConnection httpConn = (HttpURLConnection) urlObj.openConnection();
httpConn.setDoInput(true);
httpConn.setDoOutput(true);
httpConn.setUseCaches(false);
httpConn.setRequestMethod("POST");
httpConn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
httpConn.setRequestProperty("Content-Language", "pt-BR");
httpConn.setRequestProperty("Accept", "application/octet-stream");
httpConn.setRequestProperty("Connection", "close");
DataOutputStream dos = new DataOutputStream(httpConn.getOutputStream());
dos.writeBytes("funcionou");
dos.close();
} catch (Exception e) {
Log.v(TAG, "--------> EXCESSÃO:" + e);
e.printStackTrace();
}
}
}
}
vlwww
Para quem passar pelo mesmo problema que eu, eis a solução:
package org.me.gustavoandroid;
import android.app.ListActivity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.ArrayAdapter;
import java.io.DataInputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
public class SincronizarServidor extends ListActivity {
private List lista=new ArrayList();
private Handler manipulador = new Handler() {
@Override
public void handleMessage(Message msg) {
atualiza();
}
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.atualiza();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menufazconexaoweb, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.mnFazConexao:
Thread t = new Thread(new ConexaoWWW());
t.start();
return true;
default:
return super.onContextItemSelected(item);
}
}
private void atualiza() {
setListAdapter(new ArrayAdapter(this, R.layout.fazconexaoweb, this.lista));
}
private class ConexaoWWW implements Runnable {
public void run() {
try {
URL urlObj = new URL("http://172.28.95.67:8080/Gustavo-Android-Servlet/Servidor");
HttpURLConnection httpConn = (HttpURLConnection) urlObj.openConnection();
httpConn.setDoInput(true);
httpConn.setDoOutput(true);
httpConn.setUseCaches(false);
httpConn.setRequestMethod("POST");
httpConn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
httpConn.setRequestProperty("Content-Language", "pt-BR");
httpConn.setRequestProperty("Accept", "application/octet-stream");
httpConn.setRequestProperty("Connection", "close");
OutputStream os = httpConn.getOutputStream();
os.write("acao=CONECTOU AO SERVLET!!!".getBytes());
os.close();
String msg = httpConn.getResponseMessage();
int code = httpConn.getResponseCode();
if (code == 200) {
DataInputStream dis = new DataInputStream(httpConn.getInputStream());
String leitura = null;
// lista = new ArrayList();
do {
leitura = dis.readUTF();
if (!"#Encerra leitura#".equals(leitura)) {
Log.i(SincronizarServidor.class.getName(), String.format("Leitura: %s", leitura));
lista.add(leitura);
}
} while (!"#Encerra leitura#".equals(leitura) && leitura != null);
manipulador.sendEmptyMessage(0);
dis.close();
} else {
Log.i(SincronizarServidor.class.getName(), String.format("Código invalido:: %s", msg));
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
}
e o meu servlet
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet(name = "Servidor", urlPatterns = {"/Servidor"})
public class Servidor extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("INICIOU CONEXÃO");
resp.setContentType("text/plain;charset=UTF-8");
String variavel = req.getParameter("acao");
System.out.println("Param: " + variavel);
OutputStream out = resp.getOutputStream();
DataOutputStream dos = new DataOutputStream(out);
dos.writeUTF("elemento que veio:" + variavel);
dos.writeUTF("\ntexto");
dos.close();
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
@Override
public String getServletInfo() {
return "Short description";
}
private void processRequest(HttpServletRequest request, HttpServletResponse response) {
throw new UnsupportedOperationException("Not yet implemented");
}
}
feito!