Demande JSON POST sur l'iPhone (en utilisant HTTPS)

J'ai un service WCF hébergé et je suis en train de l'utiliser dans une application iPhone comme un JSON requête POST. J'ai l'intention sur l'utilisation de JSON sérialiseur plus tard, mais c'est ce que j'ai pour la requête:

    NSString *jsonRequest = @"{\"username\":\"user\",\"password\":\"letmein\"}";
    NSLog(@"Request: %@", jsonRequest);

    NSURL *url = [NSURL URLWithString:@"https://mydomain.com/Method/"];

    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url];
    NSData *requestData = [NSData dataWithBytes:[jsonRequest UTF8String] length:[jsonRequest length]];

    [request setHTTPMethod:@"POST"];
    [request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
    [request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
    [request setValue:[NSString stringWithFormat:@"%d", [requestData length]] forHTTPHeaderField:@"Content-Length"];
    [request setHTTPBody: requestData];

    [NSURLConnection connectionWithRequest:[request autorelease] delegate:self];

Dans mes données reçues, je suis juste l'impression sur la console:

- (void) connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
    NSMutableData *d = [[NSMutableData data] retain];
    [d appendData:data];

    NSString *a = [[NSString alloc] initWithData:d encoding:NSASCIIStringEncoding];

    NSLog(@"Data: %@", a);
}

Et dans cette réponse que je reçois ce message:

Data: <?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <title>Request Error</title>
    <style>
        <!-- I've took this out as there's lots of it and it's not relevant! -->
    </style>
  </head>
  <body>
    <div id="content">
      <p class="heading1">Request Error</p>
      <p xmlns="">The server encountered an error processing the request. Please see the <a rel="help-page" href="https://mydomain.com/Method/help">service help page</a> for constructing valid requests to the service.</p>
    </div>
  </body>
</html>

Personne ne sait pourquoi ce qui se passe et où je vais mal?

J'ai lu sur l'utilisation de ASIHTTPPost à la place, mais je ne peux pas obtenir la démo pour s'exécuter en iOS4 🙁

Grâce

EDIT:

Je l'ai juste utilisé pour CharlesProxy à flairer ce qui se passe quand je l'appelle à partir de l'iPhone (le Simulateur) et c'est ce qu'il m'a donné:
Demande JSON POST sur l'iPhone (en utilisant HTTPS)

La seule chose étrange que j'ai remarqué, c'est qu'il dit "SSL Proxy n'est pas activée pour cet hôte: activer dans les Paramètres de Proxy, SSL lieux". Personne ne sait ce que cela signifie? (Cela arrive aussi dans mon travail client windows).

J'ai juste couru sur mon windows client et la seule chose qui est différent est la Demande et de la Réponse de texte chiffré. Ai-je raté quelque chose afin d'utiliser une connexion HTTP sécurisée pour ce faire?

NOUVELLE ÉDITION:
Cela fonctionne avec un non-HTTPS demande tels que:
http://maps.googleapis.com/maps/api/geocode/json?address=UK&capteur=true. Donc je suppose que le problème est d'obtenir l'iPhone pour envoyer le POST correctement sur SSL?

Je suis également l'utilisation de ces méthodes:

- (void) connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge
{
    if([challenge.protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust])
    {
        [challenge.sender useCredential:[NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust]
        forAuthenticationChallenge:challenge];
    }

    [challenge.sender continueWithoutCredentialForAuthenticationChallenge:challenge];
}

- (void) connection:(NSURLConnection *)connection canAuthenticateAgainstProtectionSpace:(NSURLProtectionSpace *)protectionSpace
{
    if([[protectionSpace authenticationMethod] isEqualToString:NSURLAuthenticationMethodServerTrust])
    {
        return YES;
    }
}

Cela me permet d'obtenir ce bien. Si je ne les utilise pas, j'obtiens un message d'erreur renvoyé en disant:

Le certificat du serveur n'est pas valide. Vous pourriez être connecter à un serveur qui est de faire semblant d'être “mydomain.com” qui pourrait mettre vos informations confidentielles à risque.

source d'informationauteur ingh.am