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:
Le fichier hosts de Windows:
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 httpd-vhosts d'Apache:
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 .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
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 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 #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>
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
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: / #...
Voila, je bloque depuis 2 jours et j'aurai bien besoin d'un coup de main.
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>
Qu'en pensez-vous? Avez-vous des suggestions?
Merci.
Partager