Pessoal estou com um problema no meu código, o aplicativo está fechando quando chamo a função onClick, quando chega nessa parte do código urlConnection.setRequestMethod(“GET”); dá erro e o aplicativo fecha, poderia me ajudar me informando onde estou errando.
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void botaoCasa1(View view) throws IOException{
this.ligarDesligar();
}
public void ligarDesligar() throws IOException {
URL url = new URL("http://localhost:5000/api/transaction/");
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestMethod("GET");
urlConnection.connect();
try {
InputStream in = urlConnection.getInputStream();
BufferedReader reader = new BufferedReader (new InputStreamReader(in));
String linha;
StringBuffer buffer = new StringBuffer();
while ((linha = reader.readLine()) != null){
buffer.append(linha + "\n");
}
reader.close();
System.out.println(buffer);
}finally {
urlConnection.disconnect();
}
}
}
Irmão me desculpa mano não poder mostrar o erro, é que o meu notebook é ruim, ele não roda o emulador, nem no celular, da ultima vez que fui tentar rodar o emulador o notebook travou por 30min, só vou conseguir colocar o erro quando estiver no curso, a noite, pois só consigo rodar a aplicação no laboratório do curso.
Tranquilo! Quando for entrar lá dá uma olhada nesse link https://github.com/mssiedler/programatche/tree/master/webservice
Tem exemplo de webservice pra android
Mano no meu github tem todo meu código lá, se quiser dá uma olhada, eu agradeço.
Eu tô sem o AndroidStudio no momento! Não vou conseguir rodar seu projeto
Ok irmão, muito obrigado pela ajuda.
Mas eu testei seu código no Java Desktop e funciona normal, às vezes é só o link que você colocou que tá errado
Tem que ver no Android Studio qual é o erro
Copia e cola o erro todo, por favor
E/AndroidRuntime: FATAL EXCEPTION: main
Process: edivandejesus.smartcityapp.com, PID: 12179
java.lang.IllegalStateException: Could not execute method for android:onClick
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:390)
at android.view.View.performClick(View.java:6256)
at android.view.View$PerformClick.run(View.java:24701)
at android.os.Handler.handleCallback(Handler.java:789)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6541)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Method.invoke(Native Method)
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:385)
at android.view.View.performClick(View.java:6256)
at android.view.View$PerformClick.run(View.java:24701)
at android.os.Handler.handleCallback(Handler.java:789)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6541)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
Caused by: android.os.NetworkOnMainThreadException
at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1448)
at java.net.Inet6AddressImpl.lookupHostByName(Inet6AddressImpl.java:102)
at java.net.Inet6AddressImpl.lookupAllHostAddr(Inet6AddressImpl.java:90)
at java.net.InetAddress.getAllByName(InetAddress.java:787)
at com.android.okhttp.Dns$1.lookup(Dns.java:39)
at com.android.okhttp.internal.http.RouteSelector.resetNextInetSocketAddress(RouteSelector.java:175)
at com.android.okhttp.internal.http.RouteSelector.nextProxy(RouteSelector.java:141)
at com.android.okhttp.internal.http.RouteSelector.next(RouteSelector.java:83)
at com.android.okhttp.internal.http.StreamAllocation.findConnection(StreamAllocation.java:174)
at com.android.okhttp.internal.http.StreamAllocation.findHealthyConnection(StreamAllocation.java:126)
at com.android.okhttp.internal.http.StreamAllocation.newStream(StreamAllocation.java:95)
at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:281)
at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:224)
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:461)
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:127)
at edivandejesus.smartcityapp.com.MainActivity.ligarDesligar(MainActivity.java:37)
at edivandejesus.smartcityapp.com.MainActivity.botaoCasa1(MainActivity.java:29)
at java.lang.reflect.Method.invoke(Native Method)
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:385)
at android.view.View.performClick(View.java:6256)
at android.view.View$PerformClick.run(View.java:24701)
at android.os.Handler.handleCallback(Handler.java:789)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6541)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
Application terminated.
esse é a parte do erro.
Sempre que for enviar um código/erro, selecione o mesmo e aperte no </> ou CTRL+SHIFT+C
Você olhou o link que eu mandei antes?
Pra solucionar esse erro, adiciona no onCreate
:
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
E adiciona a permissão da internet no manifest.xml:
<uses-permission android:name="android.permission.INTERNET"/>