2014-06-06 3 views
0

J'essaie de consommer un service wcf que j'ai publié dans iis sur mon ordinateur local. Le service WCF est à l'intérieur de mon routeur, donc je ne peux accéder au service qu'en dehors du routeur. (Je fais cela en éteignant le wifi sur mon téléphone et je suis en mesure d'atteindre le service). J'essaye d'exécuter une méthode GET.Consommation du service WCF avec Objective C Problème

Le côté serveur code WCF ressemble à ceci:

//Service1.svc.cs

public string GetUsers() 
     { 
      var userController = new UserController(); 

      string returnString = userController.GetAllUsers(); 

      return returnString; 
     } 

//IService.cs

[OperationContract] 
     [WebGet(UriTemplate = "/GetUsers")] 
     string GetUsers(); 

// Iphone client

- (IBAction)btnSendRequest:(id)sender 
{ 
    NSString *restCallString = [NSString stringWithFormat:@"publicIP/MyService/Service1.svc/GetUsers"]; 


    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:restCallString]]; 
    [request setHTTPMethod:@"GET"]; 
    [request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; 

    NSError *error = nil; 
    NSURLResponse *response = nil; 


    NSData *result = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error]; 

} 

Maintenant, si je change le restCallString à quelque chose comme http://www.apple.com alors ma variable de résultat * va récupérer des données. Je débogue cela dans Xcode sur mon appareil actuel avec le wifi éteint sur mon appareil. En théorie, il devrait se comporter comme quand je vois la méthode de service dans le navigateur de mon téléphone, mais cela ne fonctionne pas. La variable * result renvoie toujours zéro lorsque j'essaie d'atteindre mon service. Si quelqu'un a des conseils ou des conseils, je l'apprécierais vraiment.

+0

Avez-vous Chrome sur iOS, vous pouvez peut-être ajouter l'extension Postman et tester votre capacité à communiquer avec succès le service WCF du téléphone? –

Répondre

1

Peut-être que vous voulez envisager d'utiliser cela, je pense que le service WCF peut être configuré de manière incorrecte.

Vous devez marquer un format de réponse dans votre service et configurer la liaison Web.

http://www.codeproject.com/Articles/105273/Create-RESTful-WCF-Service-API-Step-By-Step-Guide

+0

Salut Dane, j'ai essayé d'ajouter le type de réponse comme JSON comme dans le lien ci-dessus. Mon web.config avait l'air un peu différent de ce qu'il y avait dans l'article. Cependant, j'ai fait un NSLog sur la description localisée du message d'erreur * revenant après la réponse. Il renvoie un statut "URL non prise en charge". Si je trouve une solution pour cela, je l'afficherai ici. – zic10

+0

Résolu, ce qui a fonctionné pour moi était d'ajouter http: // juste avant publicIP dans mon URL et cela a fonctionné parfaitement. – zic10

Questions connexes