Problème d'appel Web Service
Bonjour bonsoir tout le monde.
pour mon souci l'intitulé est clair. pour détailler :
je développe un web service en .Net C#, plus précisément un wcf, dont voici le code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
public class ServiceTest : IServiceTest
{
static List<Menu> lstMenu;
public int getNombreMenu()
{
Console.WriteLine("demande de comptabilité");
if (lstMenu == null)
lstMenu = new List<Menu>();
return (lstMenu.Count);
}
}
[ServiceContract(Namespace="NabService.test")]
public interface IServiceTest
{
[OperationContract]
int getNombreMenu();
} |
et dans mon app.config j'ai ceci entre autre :
Code:
1 2 3 4 5
| <host>
<baseAddresses>
<add baseAddress="http://localhost:8732/IServiceTest"/>
</baseAddresses>
</host> |
Celui ci marche bien, avec un client .Net j'intérroge bien mon WS.
En revanche coté android, j'utilise android studio, avec un émulateur. j'ai mis en place 3 solutions pour intérroger mon ws :
1ere
Code:
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
|
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet=true;
envelope.setOutputSoapObject(request);
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
androidHttpTransport.debug=true;
boolean bError = false;
try
{
if(androidHttpTransport == null)
tv.setText("httpTransport nul");
else
{
androidHttpTransport.call(SOAP_ACTION,envelope);
tv.setText("envoi de requete ok");
}
}
catch (Exception exp)
{
tv.setText("erreur d'envoi de requete " + exp.getMessage());
bError = true;
} |
le code fonctionne, pas d'erreur particulière, sauf celle du catch.
2eme version :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
InputStream StreamReponse = null;
try {
// Ouverture de la connexion
URL url = new URL(URL);
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
// Connexion à l'URL
urlConnection.connect();
// Si le serveur nous répond avec un code OK
if (urlConnection.getResponseCode() == HttpURLConnection.HTTP_OK) {
StreamReponse = urlConnection.getInputStream();
}
}
catch (Exception e)
{
return null;
} |
la version du tuto sur ce site meme.
3eme :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| URL myurl = null;
try {
myurl = new URL(URL + "/getNombreMenu");
Toast.makeText(getApplicationContext(), "URL ok",Toast.LENGTH_LONG).show();
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
URLConnection myconn =myurl.openConnection();
Toast.makeText(getApplicationContext(), "instance connexion",Toast.LENGTH_LONG).show();
InputStream in= new BufferedInputStream(myconn.getInputStream());
Toast.makeText(getApplicationContext(), "reception flux",Toast.LENGTH_LONG).show();
... |
rien qu'a ce niveau je sors en erreur
pour info voici mon parametrage :
Code:
1 2 3 4
| private static final String NAMESPACE = "NabService.test";
private static final String URL = "http://10.0.2.2:8732/IServiceTest";
private static final String METHOD_NAME = "getNombreMenu";
private static final String SOAP_ACTION = "NabService.test/IServiceTest/getNombreMenu"; |
Celui ci me semble ok d'après le wsdl.
j'ai bien la permission d'accès au web sur mon manifest, mon navigateur se connecte bien a internet depuis l'émulateur, et j'ai essayé d'appeler mon web service depuis le navigateur mais erreur quand meme.
si quelqu'un aurait une solution à m'avancer j'y serai très attentif.
si vous avez besoin de plus d'infos n'hésitez pas.
Merci d'avance pour votre aide