AVISO: Cualquier pregunta que no cumpla ninguno de estos criterios podrá ser borrada sin previo aviso.

Hola. Necesito conectar con un ws .asmx que tiene autenticación Windows. He encontrado algún código por internet como el que incluyo, pero no he visto la manera de agregarle el usuario y la contraseña. ¿Alguien podría ayudarme? Muchas gracias.

  • (IBAction)CallWService { recordResults = NO;

    NSURLRequest *theRequest=[NSURLRequest requestWithURL:[NSURL
    URLWithString:@"http://ds0087/encripta/wsencripta.asmx/Encripta?textoClaro=xxx"] cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0];

    NSURLConnection *theConnection=[[[NSURLConnection alloc] initWithRequest:theRequest delegate:self]autorelease];

    if (theConnection) { self.receivedData =[[NSMutableData data] retain];

    // AQUI SE RECIBEN LOS DATOS
    

    } else { // AQUI EN CASO DE QUE LA CONEXION FÁLLE }

}

preguntado 20 Jun '11, 16:54

RD24's gravatar image

RD24
1111


Pues vas a tener que bajar a nivel de CFNetwork para autenticarte contra windows. No he tenido que hacerlo nunca así que no puedo ponerte código de ejemplo, pero básicamente el procedimiento consiste en intentarlo primero sin credenciales, cuando el servidor te de error, decirle al framework que basándose en la respuesta de error, averigüe que tipo de autenticación requiere el servidor y pedirle que la use. Parece que sería más fácil decirle de entrada que use autenticación windows, pero por lo visto se espera que hagas todos estos pasos.

Los pasos detallados los encontrarás en http://developer.apple.com/library/mac/#documentation/Networking/Conceptual/CFNetwork/CFHTTPAuthenticationTasks/CFHTTPAuthenticationTasks.html, el tipo de autenticación que te interesa es NTLM.

enlace permanente

respondido 20 Jun '11, 17:35

victor's gravatar image

victor
2.9k51248

Hola.

Yo actualmente estoy desarrollando para IOS y también estoy en el mundo del WebServices. Te comento como hago yo la autenticación porque es posible que te pueda valer.

Desde la app lo único que hago es llamar a una URL como te aparece en el ejemplo:

"http://ds0087/encripta/wsencripta.asmx/Encripta?textoClaro=xxx`

Donde se le pasa un valor para que el webservices lo procese.

El tema es que yo la autenticación con el servidor lo hago directamente desde el webservices.

 [WebMethod]
    public string[] TodosClientes()
    {

       string Conexion = "Data Source = IP DEL SERVIDOR; initial catalog = NOMBRE BASE DE DATOS; Integrated Security = True";
                   SqlConnection Con = new SqlConnection(Conexion);
        Con.Open();

        SqlDataAdapter CMD = new SqlDataAdapter("CONSULTA SQL SERVER PARA QUE ME TRAIGA LOS DATOS QUE QUIERO", Con);

        DataSet DS = new DataSet();
        CMD.Fill(DS, "DATOS");
        DataTable TablaCliente = DS.Tables[0];
        int longitud = TablaCliente.Rows.Count;

        string[] valores;
        valores = new string[longitud];

        int i = 0;
        foreach (DataRow row in DS.Tables[0].Rows)
        {

            valores[i] = DS.Tables[0].Rows[i]["CLI_RAZON1"].ToString();
            i++;
        }

        return valores;
    }

Espero que te sirva de ayuda.

enlace permanente

respondido 01 Jul '11, 11:55

blimo86's gravatar image

blimo86
208812

editó 01 Jul '11, 11:56

Tu respuesta:
Activar/desactivar vista previa

Sobre esta pregunta

Etiquetas de la pregunta:

×19
×8
×2
×2
×2

Pregunta realizada el: 20 Jun '11, 16:54

Pregunta visitada: 931 veces

Última modificación: 01 Jul '11, 11:56

Seguir esta pregunta

Por Email:

Una vez que entres podrás suscribirte desde aquí para recibir actualizaciones

Por RSS:

Respuestas

Respuestas y Comentarios

Realizar Donación