Autore Topic: Http Post  (Letto 662 volte)

Offline hate-within

  • Nuovo arrivato
  • *
  • Post: 5
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    nexus 5 - LG
  • Sistema operativo:
    os Sierra
Http Post
« il: 28 Aprile 2017, 22:46:05 CEST »
0
Buonasera a tutti!
Sto cercando da un po' di risolvere un problema basilare per l'app che vorrei sviluppare.
Vorrei con la mia app permettere di registrarsi ad un database, mediante il passaggio delle variabili ad uno script php, che provvede a passare i dati al database SQL. Non riesco però a passare nessun valore mediante HttpURLconnection. Quando lancio lo script, e clicco il bottone in questione, l'app va immediatamente in crash...
Nessuna idea per fare passare i dati da android alla pagina php mediante il metodo POST?

MANIFEST
Codice (XML): [Seleziona]
<uses-permission android:name="android.permission.INTERNET" />
Codice (Java): [Seleziona]
package com.example.xxx.rubrica;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;

import java.io.DataOutputStream;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

public class HttpPost extends AppCompatActivity
{

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_http_post);
    }

    public void onClickQuery(View v)
    {
        try
        {
            URL url = new URL("http://www.miosito.com/pagina.php");
            String parametri = "email=email@email.it";

            HttpURLConnection connection = (HttpURLConnection)url.openConnection();
            connection.setRequestMethod("POST");
            connection.setDoOutput(true);
            DataOutputStream wr = new DataOutputStream(connection.getOutputStream());
            wr.writeBytes(parametri);
            wr.flush();
            wr.close();
        }
        catch (MalformedURLException e)
        {
            e.printStackTrace();
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }
    }
}


Qui di seguito il LOG
Codice: [Seleziona]
[ 04-28 22:27:38.676  3427: 3427 D/         ]
                                                 HostConnection::get() New Host Connection established 0x9bb6d4c0, tid 3427
04-28 22:28:04.753 3427-3427/com.example.xxx.rubrica E/AndroidRuntime: FATAL EXCEPTION: main
                                                                              Process: com.example.xxx.rubrica, PID: 3427
                                                                              java.lang.IllegalStateException: Could not execute method for android:onClick
                                                                                  at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:293)
                                                                                  at android.view.View.performClick(View.java:5637)
                                                                                  at android.view.View$PerformClick.run(View.java:22429)
                                                                                  at android.os.Handler.handleCallback(Handler.java:751)
                                                                                  at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                                  at android.os.Looper.loop(Looper.java:154)
                                                                                  at android.app.ActivityThread.main(ActivityThread.java:6119)
                                                                                  at java.lang.reflect.Method.invoke(Native Method)
                                                                                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
                                                                                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
                                                                               Caused by: java.lang.reflect.InvocationTargetException
                                                                                  at java.lang.reflect.Method.invoke(Native Method)
                                                                                  at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288)
                                                                                  at android.view.View.performClick(View.java:5637) 
                                                                                  at android.view.View$PerformClick.run(View.java:22429) 
                                                                                  at android.os.Handler.handleCallback(Handler.java:751) 
                                                                                  at android.os.Handler.dispatchMessage(Handler.java:95) 
                                                                                  at android.os.Looper.loop(Looper.java:154) 
                                                                                  at android.app.ActivityThread.main(ActivityThread.java:6119) 
                                                                                  at java.lang.reflect.Method.invoke(Native Method) 
                                                                                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) 
                                                                                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776) 
                                                                               Caused by: android.os.NetworkOnMainThreadException
                                                                                  at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1303)
                                                                                  at java.net.Inet6AddressImpl.lookupHostByName(Inet6AddressImpl.java:86)
                                                                                  at java.net.Inet6AddressImpl.lookupAllHostAddr(Inet6AddressImpl.java:74)
                                                                                  at java.net.InetAddress.getAllByName(InetAddress.java:752)
                                                                                  at com.android.okhttp.internal.Network$1.resolveInetAddresses(Network.java:29)
                                                                                  at com.android.okhttp.internal.http.RouteSelector.resetNextInetSocketAddress(RouteSelector.java:187)
                                                                                  at com.android.okhttp.internal.http.RouteSelector.nextProxy(RouteSelector.java:156)
                                                                                  at com.android.okhttp.internal.http.RouteSelector.next(RouteSelector.java:98)
                                                                                  at com.android.okhttp.internal.http.HttpEngine.createNextConnection(HttpEngine.java:345)
                                                                                  at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:328)
                                                                                  at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:246)
                                                                                  at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:457)
                                                                                  at com.android.okhttp.internal.huc.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:126)
                                                                                  at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getOutputStream(HttpURLConnectionImpl.java:257)
                                                                                  at com.example.xxx.rubrica.HttpPost.onClickQuery(HttpPost.java:33)
                                                                                  at java.lang.reflect.Method.invoke(Native Method) 
                                                                                  at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288) 
                                                                                  at android.view.View.performClick(View.java:5637) 
                                                                                  at android.view.View$PerformClick.run(View.java:22429) 
                                                                                  at android.os.Handler.handleCallback(Handler.java:751) 
                                                                                  at android.os.Handler.dispatchMessage(Handler.java:95) 
                                                                                  at android.os.Looper.loop(Looper.java:154) 
                                                                                  at android.app.ActivityThread.main(ActivityThread.java:6119) 
                                                                                  at java.lang.reflect.Method.invoke(Native Method) 
                                                                                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) 
                                                                                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776) 
04-28 22:28:07.585 1610-2129/system_process E/JavaBinder: !!! FAILED BINDER TRANSACTION !!!  (parcel size = 56)
04-28 22:28:07.634 1610-1650/system_process E/InputDispatcher: channel '2fe3540 com.example.xxx.rubrica/com.example.xxx.rubrica.MainActivity (server)' ~ Channel is unrecoverably broken and will be disposed!
04-28 22:28:07.634 1610-1650/system_process E/InputDispatcher: channel '1a108b3 com.example.xxx.rubrica/com.example.xxx.rubrica.HttpPost (server)' ~ Channel is unrecoverably broken and will be disposed!
04-28 22:28:07.644 1610-2129/system_process E/ActivityManager: applyOptionsLocked: Unknown animationType=0
04-28 22:28:07.935 1326-1489/? E/SurfaceFlinger: ro.sf.lcd_density must be defined as a build property
                                                 
                                                 [ 04-28 22:28:07.938  3890: 3890 D/         ]
                                                 HostConnection::get() New Host Connection established 0x9bb1e480, tid 3890

Offline tonno16

  • Utente storico
  • *****
  • Post: 1233
  • Respect: +60
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:Http Post
« Risposta #1 il: 30 Aprile 2017, 11:55:35 CEST »
0
Non puoi fare operazioni in rete sul thread principale. Android non lo permette. Devi farlo dentro un thrrad. Per esempio dentro un AsynkTask andrebbe bene

Offline hate-within

  • Nuovo arrivato
  • *
  • Post: 5
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    nexus 5 - LG
  • Sistema operativo:
    os Sierra
Re:Http Post
« Risposta #2 il: 01 Maggio 2017, 13:42:29 CEST »
0
Ecco grazie!!! L'informazione che mi mancava!!!