Autore Topic: Sviluppo applicazione che faccia richiesta http a google safe browsing.  (Letto 570 volte)

Offline cri90

  • Nuovo arrivato
  • *
  • Post: 14
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Corby GT-I5500
  • Sistema operativo:
    Ubuntu 12.10, Windows 7
Salve a tutti, sto sviluppando un'applicazione che faccia una richiesta http a google safe browsing e abbia come risultato se il sito è ok, se è un malware, phishing ecc. Il problema è che quando faccio la richiesta mi sembra di non ricevere nemmeno l'ok dal sito e non capisco il perchè.. Mi potete dare una mano? posto il mio codice:
Codice (Java): [Seleziona]
package com.example.testbarcode;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.StatusLine;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import android.app.Activity;
import android.widget.TextView;
import android.content.pm.ResolveInfo;
import android.widget.Button;
import android.util.Log;
import android.view.View;
import android.os.Bundle;
import android.content.Intent;
import android.content.pm.PackageManager;

public class MainActivity extends Activity {
    private static final Intent SCAN_INTENT = new Intent("com.google.zxing.client.android.SCAN");
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        PackageManager packageManager = this.getPackageManager();
        ResolveInfo resolveInfo = packageManager.resolveActivity(SCAN_INTENT,PackageManager.GET_RESOLVED_FILTER);
        if(resolveInfo==null) {
((Button)this.findViewById(R.id.buttonScan)).setEnabled(false);
((TextView)this.findViewById(R.id.scanResult)).setText("Non hai installato nessuna applicazione per effettuare lo scan!!!\nScaricala qui: http://www.appbrain.com/app/com.google.zxing.client.android");
        }
    }
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (resultCode == Activity.RESULT_OK && requestCode == 0) {
            String scanResult = data.getStringExtra("SCAN_RESULT");
//((TextView)this.findViewById(R.id.scanResult)).setText(String.format("Risultato dello scan: %1$s", scanResult));

            HttpClient httpclient = new DefaultHttpClient();
            HttpResponse response;
            String responseString = null;
            try {
                response = httpclient.execute(new HttpGet("https://sb-ssl.google.com/safebrowsing/api/lookup?client=Androidapp&apikey=7&appver=1.0&pver=3.0&url=SCAN_RESULT"));
                StatusLine statusLine = response.getStatusLine();
                if(statusLine.getStatusCode() == HttpStatus.SC_OK){
                    ByteArrayOutputStream out = new ByteArrayOutputStream();
                    response.getEntity().writeTo(out);
                    out.close();
                    responseString = out.toString();
                    if (responseString == "ok"){

((TextView)this.findViewById(R.id.scanResult)).setText("L'URL è attendibile e possiamo procedere ad aprire il browser.");
                    }
                    else {
((TextView)this.findViewById(R.id.scanResult)).setText("L'URL è considerato malware o phishing, si consiglia di non proseguire");
                    }
                }

                else{
                    //Closes the connection.
((TextView)this.findViewById(R.id.scanResult)).setText(String.format("impossibile ricevere informazioni sull'attendibilità del l'URL: %1$s risultato della scansione", scanResult));
                    response.getEntity().getContent().close();
                    throw new IOException(statusLine.getReasonPhrase());
                }

            } catch (ClientProtocolException e) {
                //TODO Handle problems..
            } catch (IOException e) {
                //TODO Handle problems..
            }

        }
        else {
((TextView)this.findViewById(R.id.scanResult)).setText("Operazione annullata!");
        }
    }


    public void onScan(View view) {
        startActivityForResult(SCAN_INTENT, 0);    }
}

Ho seguito questa guida per fare la richiesta a google safe browsing: https://developers.google.com/safe-browsing/lookup_guide#AQuickExample

Ultilizzo il programma Barcode Scanner della libreria zxing!
« Ultima modifica: 28 Ottobre 2012, 12:32:35 CET da cri90 »