es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo eliminar la barra diagonal adicional de URI cuando convertí NSUrl a URI.

Cuando intento convertir NSUrl a URI, se agrega una barra adicional en la URL. A continuación se muestra el método:

public override bool OpenUrl(UIApplication app, NSUrl url, NSDictionary options)
{
    Uri uri = new Uri(url.AbsoluteString);
    ViewController.Auth?.OnPageLoading(uri);
    return true;
}

Salida: uri=msauth.com.xxxxx.xxxxxxxx://auth/?code=ae49c2974f4a5ce7becc6ccc95ef98ac8c93cd314aeda9b46254e6f0e6f80957&scope=TriggerApi%20offline_access&state=dshrscvaicthdifb

Resultado esperado: uri=msauth.com.xxxxx.xxxxxxxx://auth?code=ae49c2974f4a5ce7becc6ccc95ef98ac8c93cd314aeda9b46254e6f0e6f80957&scope=TriggerApi%20offline_access&state=dshrscvaicthdifb

¿Alguien más ha encontrado este problema?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Sí, algunos desarrolladores han encontrado un problema similar al convertir NSUrl a URI en C#. El problema es que la clase NSUrl incluye una barra diagonal al final después del nombre de host y número de puerto, a menos que la URL termine con una barra diagonal. Esto puede causar que algunas URI estén mal formadas, como se muestra en la salida anterior.

    Una forma de solucionarlo es eliminar la barra diagonal al final de la propiedad AbsoluteString de NSUrl, antes de usarla para crear la URI. Por ejemplo, podrías agregar la siguiente línea antes de crear la URI:

    string absoluteUrl = url.AbsoluteString.TrimEnd('/');
    

    O, alternativamente, podrías usar la clase UriBuilder para construir la URI, que elimina automáticamente cualquier barra diagonal duplicada:

    UriBuilder builder = new UriBuilder()
    {
        Scheme = url.Scheme,
        Host = url.Host,
        Port = url.Port,
        Path = url.PathAndQuery.TrimEnd('/'),
    };
    Uri uri = builder.Uri;
    

    De cualquier manera, el resultado esperado debería ser una URI sin la barra diagonal adicional después del segmento “auth”.

Comments are closed.