Quiero ignorar certificado de verificación, dónde y cómo hacerlo con XMLRPC servicio web?

Estoy accediendo a un servicio web y conseguir este error al intentar conectar( servicio web es XMLRPC y estoy usando wordpress xmlrpc código fuente para la solicitud y manejo de repsonse):

Error de Dominio=NSURLErrorDomain Código=-1202 «El certificado para este servidor no es válido. Usted podría estar conectados a un servidor que está pretendiendo ser «**.org», lo que podría poner su información confidencial en riesgo.»

WebService que está diciendo la gente a ignorar certificado de verificación de la parte, así que si alguien tiene idea de cómo hacer que te serán de gran ayuda para mí.

después de algunos sugerencia he utilizado el siguiente NSURLConnection delegado, stil mismo error

 -(BOOL)connection:(NSURLConnection *)connection  canAuthenticateAgainstProtectionSpace:(NSURLProtectionSpace *)protectionSpace {  
 return [protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust];
 }   

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

OriginalEl autor AKG | 2010-10-12

4 Kommentare

  1. 7

    Como aegzorz señaló, [NSURLRequest +setAllowsAnyHTTPSCertificate:forHost:] es una API privada y no debe ser utilizado en el código de producción. Ya que es una API privada, es un medio seguro de ser rechazado en el App Store. Publicado manera de manejar que no son de confianza de certificados es el uso de la NSURLConnection método delegado -connection:canAuthenticateAgainstProtectionSpace: y -connection:didReceiveAuthenticationChallenge:.

    Hay mucho que se puede hacer con estas Api, el manejo de cada tipo de problema de autenticación que se pueda imaginar. Me gustaría sugerir que el estudio de Apple código de ejemplo AdvancedURLConnections

    Gracias por tu respuesta, puedo ver qué es lo que debo hacer, y yo no puedo hacer que cuando estoy creando NSURLConnection por mi cuenta. En este momento estoy usando wordpress xmlrpc de solicitud y respuesta para conectarse al servicio web de forma que yo no soy capaz de averiguar cómo hacer el cambio en el código de solicitud.

    OriginalEl autor Jay O’Conor

  2. 11

    A partir de ahora Jay ha dado la respuesta correcta. Pero estos dos métodos se utilizan ahora.

    - (BOOL)connection:(NSURLConnection *)connection canAuthenticateAgainstProtectionSpace:(NSURLProtectionSpace *)protectionSpace //deprecated over iOS 5.0. Not even called in iOS 7.0
    
    - (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge //deprecated over iOS 5.0. Not even called in iOS 7.0

    Así que en lugar de que usted puede utilizar ese método:

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

    He usado este fragmento de código para superar la siguiente lista de errores:

    Error de Dominio=NSURLErrorDomain Código=-1202 «El certificado para este servidor no es válido. Usted podría estar conectados a un servidor que está pretendiendo ser «de la aplicación.*****.com», lo que podría poner su información confidencial en riesgo.

    Gracias..lo que salvó mi 2 días de trabajo. Es allí documento de apple para apoyar esto?

    OriginalEl autor Harjot Singh

  3. 4

    Estoy usando el siguiente para la prueba de una aplicación en desarrollo:

    NSURL* url = //url to webservice
    [NSURLRequest setAllowsAnyHTTPSCertificate:YES forHost:[url host]];

    Nota que es una API privada, no lo utilice en el código de producción.

    OriginalEl autor aegzorz

  4. 1

    Si usted está usando AFNetworking, puede utilizar este código:

    (Como una temp solución de cliente!)

    AFHTTPSessionManager * apiManager = [AFHTTPSessionManager initWithBaseURL:[NSURL URLWithString:baseURL];
    AFSecurityPolicy *policy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeNone];
    policy.allowInvalidCertificates = YES;
    apiManager.securityPolicy = policy;

    OriginalEl autor skywinder

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea