http

Mattepuffo's logo
Parsing JSON con Python

Parsing JSON con Python

In un precedente articolo abbiamo visto come effettuare una richiesta HTTP con Python.

In quel caso abbiamo fatto una semplice richiesta, senza preoccuparci del tipo di dato che viene resituito dal server.

In molti casi, in verità, i dati sono strutturati; tipo in JSON o XML.

Noi vedremo come fare nel primo caso.

Il JSON che ci viene restituito ha due tag: nome e data.

Quindi dopo aver ricevuto la risposta vediamo anche come estrapolare i singoli valori.

Mattepuffo's logo
HTTP Request con Python

HTTP Request con Python

Quello che vedremo oggi è come effettuare una richiesta HTTP a un file remoto tramite Python.

Abbiamo due modi distinti per farlo:

  • usando il modulo httplib
  • usando urllib2

Io uso la prima opzione; qui trovate la doc.

Notate subito che la libreria ha cambiato nome nella versione 3 di Python; noi in questo caso ci riferiamo alla versione 2.7.

Mattepuffo's logo
Richieste HTTP e JSON con C++ e CURL

Richieste HTTP e JSON con C++ e CURL

Oggi vedremo come usare la libreria CURL con il C++.

Il codice che vedremo è abbastanza multi piattaforma; ovviamente è necessario installare CURL e linkare il percorso giusto alla libreria, cose che differiscono da OS a OS.

Su Linux e Mac dovreste avere già CURL preinstallato; su Windows vi consiglio di procedere installando Cygwin.

Non mi soffermo su questo passaggio, ma do per scontato che l'abbiate fatto.

Detto ciò creiamo una nostra classe per usare questa libreria.

Cominciamo con il file .h:

#ifndef READ_H
#define    READ_H

#include <iostream>
#include <curl/curl.h>

using namespace std;

class Read {
public:
    Read();
    virtual ~Read();
    void read(string file);
private:
    string url;
    CURL *curl;
    CURLcode res;
    struct curl_slist *headers;
};

#endif

Nella classe abbiamo definito una funzione per leggere i dati da un file preso in remoto; la funzione richiede un unico parametro, che è appunto il file da chiamare.

Mattepuffo's logo
Inviare richieste POST in Android

Inviare richieste POST in Android

Lo scenario è questo; per vedere il contenuto è obbligatorio eseguire il login, e le credenziali sono salvate sun un database remoto.

A seconda della risposta del server ci sarà un un messaggio di errore oppure verremo mandati all'activiy principale della app.

Il layout è abbastanza semplice:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:tools="http://schemas.android.com/tools"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <EditText
        android:id="@+id/txt_user"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="30dp"
        android:ems="10"
        android:inputType="text"
        android:text="" >

        <requestFocus />
    </EditText>

    <EditText
        android:id="@+id/txt_pwd"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/txt_user"
        android:layout_below="@+id/txt_user"
        android:layout_marginTop="24dp"
        android:ems="10"
        android:inputType="textPassword"
        android:text="" />

    <Button
        android:id="@+id/btn_login"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/txt_pwd"
        android:layout_below="@+id/txt_pwd"
        android:layout_marginTop="30dp"
        android:text="@string/btn_login" />

</RelativeLayout>

Si compone di un Button e due EditText.

Mattepuffo's logo
Verificare che HTTPS sia abilitato con PHP

Verificare che HTTPS sia abilitato con PHP

Di default nessun server web ha abilitato il protocollo HTTPS (o almeno questo è quello che mi pare di aver capito).

Possiamo controllare il supporto a HTTPS in diverse maniere, ma se siamo su un servizio di hosting dove non possiamo accedere ai files di configurazione dobbiamo per forza usare un qualche linguaggio.

Noi lo faremo con il PHP.

Per farlo useremo la variabile globale $_SERVER.

Se vedete nella documentazione notate che tra gli indici possibili c'è anche quello che riguarda HTTPS.

Mattepuffo's logo
Gestire le sessioni con le Servlet

Gestire le sessioni con le Servlet

Gestire le sessioni con le Servlet è abbastanza semplice.

Prendiamo uno scenario del genere:

-form di login

-se l'utente esiste viene creato un oggetto User

-l'oggetto viene passato alla Servlet che crea una sessione

Quindi partendo da un form del genere:

<table>
<form action="ServletLogin" method="post">
<tbody>
<tr>
<td>User:</td>
<td><input type="text" id="focus" name="username" value="" /></td>
</tr>
<tr>
<td>Password:</td>
<td><input type="password" name="password" value="" /></td>
</tr>
<tr>
<td><input type="submit" value="Submit" name="submit" /></td>
</tr>
</form>
</table>

Questo form richiama la ServletLogin in POST:

public class ServletLogin extends HttpServlet {

private DBManager db = DBManager.getInstance(); // CLASSE PER LA CONNESSIONE

@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
boolean success = false;
HttpSession session = request.getSession(true);
if (session.getAttribute("user") == null) {
try {
User user = db.login(request.getParameter("username").trim(), request.getParameter("password").trim());
String userCreato = user.getName().toString();
int userCreatoId = user.getId();
session.setAttribute("user_id", userCreatoId);
session.setAttribute("user_name", userCreato);
success = true;
if (success) {
response.sendRedirect("index.jsp");
} else {
response.sendRedirect("error.jsp?err=Atenticazione fallita");
}
} catch (ClassNotFoundException ex) {
response.sendRedirect("error.jsp?err=" + ex.getMessage());
} catch (SQLException ex) {
response.sendRedirect("error.jsp?err=" + ex.getMessage());
} catch (NoSuchAlgorithmException ex) {
response.sendRedirect("error.jsp?err=" + ex.getMessage());
}
}
}

}

Istanzia un oggetto HttpSession con il quale prendiamo la sessione corrente.