Solucionado (ver solução)
Solucionado
(ver solução)
6
respostas

Exception para envio da Json

Mesmo inserindo a permissão "INTERNET" e a Thread em BackGround recebo os seguintes erros:

Caused by: java.lang.SecurityException: Permission denied (missing INTERNET permission?)

Caused by: android.system.GaiException: android_getaddrinfo failed: EAI_NODATA (No address associated with hostname)

Caused by: android.system.ErrnoException: android_getaddrinfo failed: EACCES (Permission denied)

6 respostas

Silvânio, tudo bem ?

Cara pode mostrar sua classe WebClient e AsyncTask para darmos uma olhadinha ! E por gentileza o AndroidManifest.xml !

Abraços :D

WebClient:

´´´ public class WebClient {

public String post(String json){

try {

//Determina a conecxao com o servidor URL url = new URL("https://wwww.caelum.com.br/mobile"); HttpURLConnection connection = (HttpURLConnection) url.openConnection();

//Informando ao servidor o que esta sendo enviado e o que deve ser retornado connection.setRequestProperty("Content-type","application/json"); connection.setRequestProperty("Accept","application/json");

connection.setDoOutput(true);

PrintStream output = new PrintStream(connection.getOutputStream()); output.println(json);

connection.connect();

//Recebe a leitura envida pelo servidor Scanner scanner = new Scanner(connection.getInputStream()); String resposta = scanner.next();

return resposta;

} catch (MalformedURLException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace(); }

return null; }

} ´´´

Manifest:

´´´ <?xml version="1.0" encoding="utf-8"?>

´´´

Manifest

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="br.com.agenda.agenda">

    <uses-permission android:name="android.permission.CALL_PHONE" />
    <uses-permission android:name="android.permission.RECEIVE_SMS"/>
    <uses-permission android:name="android.permission.INTERNET" />

    <application
        android:debuggable="true"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

        <activity android:name=".ListaAlunosActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <activity android:name=".FormularioActivity"></activity>

        <receiver android:name=".receiver.SMSreceiver">
            <intent-filter>
                <action android:name="android.provider.Telephony.SMS_RECEIVED"/>
            </intent-filter>
        </receiver>

    </application>

</manifest>
public class WebClient {

public String post(String json){

try {

//Determina a conecxao com o servidor URL url = new URL("https://wwww.caelum.com.br/mobile"); HttpURLConnection connection = (HttpURLConnection) url.openConnection();

//Informando ao servidor o que esta sendo enviado e o que deve ser retornado connection.setRequestProperty("Content-type","application/json"); connection.setRequestProperty("Accept","application/json");

connection.setDoOutput(true);

PrintStream output = new PrintStream(connection.getOutputStream()); output.println(json);

connection.connect();

//Recebe a leitura envida pelo servidor Scanner scanner = new Scanner(connection.getInputStream()); String resposta = scanner.next();

return resposta;

} catch (MalformedURLException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace(); }

return null; }

}
solução!

Silvanio, tudo bem ?

Dei uma olhada e pela Exception e a forma que a classe chegou aqui, talvez o problema seja que o codigo esteja comentado.

Tenta fazer o seguinte :


public String post(String json){

try {

URL url = new URL("https://wwww.caelum.com.br/mobile"); 

HttpURLConnection connection = (HttpURLConnection) url.openConnection();

connection.setRequestProperty("Content-type","application/json"); connection.setRequestProperty("Accept","application/json");

connection.setDoOutput(true);

PrintStream output = new PrintStream(connection.getOutputStream()); 

output.println(json);

connection.connect();

Scanner scanner = new Scanner(connection.getInputStream()); 

String resposta = scanner.next();

return resposta;

} catch (MalformedURLException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace(); }

return null; 

}

Pois aparentemente as permissões estão certas, deixa seu código dessa forma, se não funcionar você dá um grito aqui.

Alias, verifica se o aparelho( emulador ou físico) que você está utilizando para fazer o teste possui conexão com a internet !

Abraços :)

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software