Bonjour à tous,

Aprés 2 jours de recherches, et malgré mon ami Google, je me tourne vers vous.
J'essaye de développer une appli pour Windows Phone 8 sur Visual Studio 2012.
Le but est de me connecter à une API REST Symfony2 sur Wamp pour envoyer et recevoir des données json.
Ayant 2 projets en Symfony, j'ai le serveur localhost plus 2 autres serveurs locaux sur l'ordinateur.
Comme je débute dans ce domaine, je voudrais pour l'instant me connecter au serveur local "appli" d'Apache en tant qu'anonyme, récupérer un string et l'afficher sur le téléphone.
J'arrive à récupérer le string depuis mon serveur "appli".
Mais quand j'essaye depuis l'émulateur de Visual Studio, une erreur 403 est retournée.
Alors je suppose que l'émulateur accède à Apache mais que l'accès est bloqué suite à un défaut d'authentification.
Et je suppose aussi que:
soit c'est un problème de configuration d'Apache (pour un accès anonyme)
soit c'est un problème de requête http (pour un utilisateur anonyme)

Voici mon code:

MainPage de Visual Studio:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
 
//mainPage.xaml.cs
 
public MainPage()
        {
            InitializeComponent();
        }
 
        private async void buttonStringGet_Click_1(object sender, RoutedEventArgs e)
        {
            System.Uri targetUri = new System.Uri("http://192.168.0.11:80/appli/path/web/app_dev.php/api/pensees/5.json");
            HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(targetUri);
            request.Method = "GET";
            request.UserAgent = "";
            request.BeginGetResponse(new AsyncCallback(ReadWebRequestCallback), request);
        }
 
        private void ReadWebRequestCallback(IAsyncResult callbackResult)
        {
            try
            {
                HttpWebRequest myRequest = (HttpWebRequest)callbackResult.AsyncState;
                HttpWebResponse myResponse = (HttpWebResponse)myRequest.EndGetResponse(callbackResult);
 
                using (StreamReader httpwebStreamReader = new StreamReader(myResponse.GetResponseStream()))
                {
                    string results = httpwebStreamReader.ReadToEnd();
                    Dispatcher.BeginInvoke(() => resultText.Text = results);
                }
                myResponse.Close();
            }
            catch (WebException ex)
            {
                using (StreamReader reader = new StreamReader(ex.Response.GetResponseStream()))
                {
                    Debug.WriteLine(reader.ReadToEnd());
                }
            }    
        }
Le fichier hosts de Windows:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
#C:\Windows\System32\Drivers\etc\hosts
 
127.0.0.1       localhost
127.0.0.1       vcf
127.0.0.1       appli
Le fichier httpd-vhosts d'Apache:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
#C:\wamp\bin\apache\apache2.4.9\conf\extra\httpd-vhosts.conf
 
<VirtualHost *:80>
	ServerName localhost
    DocumentRoot "c:/wamp/www"
</VirtualHost>
 
<VirtualHost *:80>
	ServerName vcf
    DocumentRoot "c:/wamp/www/vcf"
</VirtualHost>
 
<VirtualHost *:80>
	ServerName appli
    DocumentRoot "c:/wamp/www/appli"
</VirtualHost>
Le .htaccess de l'API REST:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
#C:\wamp\www\appli\path\app\.htaccess
 
<IfModule mod_authz_core.c>
    Require all denied
</IfModule>
<IfModule !mod_authz_core.c>
    Order deny, allow
    Deny from all
</IfModule>
Le fichier security.yml de l'API REST:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
#C:\wamp\www\appli\path\app\config\security.yml
 
#...
firewalls:
        dev:
            pattern:  ^/(_(profiler|wdt)|css|images|js)/
            security: false
 
        main: 
            pattern: ^/
            anonymous: true
            provider: main
            form_login:
                login_path: fos_user_security_login
                check_path: fos_user_security_check
                default_target_path: /
            logout:
                path: fos_user_security_logout
                target: /
#...
et le résultat sur la console de Visual Studio:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
Une exception de type 'System.Net.WebException' s'est produite dans System.Windows.ni.dll et n'a pas été traitée avant une limite managée/native
Une exception de première chance de type 'System.Net.WebException' s'est produite dans System.Windows.ni.dll
Une exception de type 'System.Net.WebException' s'est produite dans System.Windows.ni.dll et n'a pas été traitée avant une limite managée/native
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>403 Forbidden</title>
</head><body>
<h1>Forbidden</h1>
<p>You don't have permission to access /appli/path/web/app_dev.php/api/pensees/5.json
on this server.</p>
<hr>
<address>Apache/2.4.9 (Win64) PHP/5.5.12 Server at 192.168.0.11 Port 80</address>
</body></html>
Voila, je bloque depuis 2 jours et j'aurai bien besoin d'un coup de main.
Qu'en pensez-vous? Avez-vous des suggestions?
Merci.