2016-08-17 2 views
0

Ich versuche, mein Telefon als SMS-Gateway mit der App zu verwenden.GET Anfrage an Android-Telefon

Die App überwacht eine HTTP GET-Anfrage, extrahiert die Telefonnummer und Nachricht aus der Anfrage, sendet sie und SMS.

Die App gibt die folgende Ziel-URL: http://fe80::57ee::c539:6741%rmnet0:9090/sendsms (nicht die reale IP)

Meine Fragen sind:

  1. Warum dies wie IPv6 sieht, obwohl mein Telefon eine IPv4-Adresse hat ?

  2. Wie in die HTTP-Anfrage "%rmnet0" einzuschließen?

  3. Was ist falsch mit dem node.js Code unten? (IP und Telefonnummern unkenntlich gemacht)

    var request = require('request'); 
    
    function send(phone,message){ 
    
    
    // Set the headers 
    var headers = { 
        'User-Agent':  'Domogeek/4', 
        'Content-Type':  'application/x-www-form-urlencoded' 
    }; 
    
    // Configure the request 
    var options = { 
        url: "http://fe80::57ee::c539:6741%rmnet0:9090/sendsms", 
        // url: "http://92.90.21.38:9090/sendsms", 
        method: 'GET', 
        headers: headers, 
        qs: {'phone': phone, 'text': message} 
    }; 
    
        console.log('GET request'); 
    
    // Start the request 
    request(options, function (error, response, body) { 
        if (!error && response.statusCode == 200) { 
         console.info('SMS sended to: %s => %s', phone, message); 
        } else { 
         console.error('SMS error : %s => %s', error, message); 
        } 
    }); 
    
    } send ('00684060640', 'willkommen');

Vielen Dank!

Antwort

0

Die App wählt die falsche Adresse. Dies ist eine Link-lokale Adresse, sie beginnt mit fe80 und kann nicht von einer externen Verbindung verwendet werden. Siehe here about the reachability scope % sign

Werfen Sie einen Blick auf Ihre ifconfig oder netcfg abhängig von Ihrer Android-Version und sehen Sie, welche Adresse (n) Ihr Telefon hat.

+0

Danke, also hört die App eine lokale Schnittstelle. Würde Android eine eingehende Anfrage an diese Link-lokale Adresse weiterleiten? Wie würde das funktionieren? – jomcfly

0

Ihr Telefon hat IPv6, weil alle moderne Telefone IPv6 haben. Es ist ein obligatorisches Protokoll für 4G LTE. IPv4 ist optional, und auf einem Telefon sind möglicherweise überhaupt keine IPv4-Adressen konfiguriert (in diesem Fall verwendet das Mobilfunknetz eine Übersetzungstechnologie wie NAT64/DNS64, um dem Telefon IPv4-Ressourcen über IPv6 zu präsentieren).

Die korrekte Formatierung eines IPv6-Literals in einer URL erfolgt in Klammern. Zum Beispiel:

http://[fe80::57ee::c539:6741%rmnet0]:9090/sendsms 

Aber beachten Sie, dass einige HTTP-Client-Implementierungen zu IPv6 Verbindungs ​​Link-lokalen Adressen nicht in der Lage sind. In diesem Fall müssen Sie wahrscheinlich den App-Entwickler um Rat fragen (oder eher einen Fehler melden).