Pregunta

Yo estaba tratando de realizar la autenticación básica para Twitter de mi Qt aplicación. Yo uso QNetworkAccessManager. Pero no pude encontrar ninguna ayuda en esto.

Pero encontré una llamada qsoapmanager programa que transfiere las credenciales de base 64 a través de la cabecera. Tal vez pueda hacer esto con QNAM mediante el establecimiento de cabecera en QNetowrkRequest. Pero no pude encontrar un camino.

En la fuente de qsoapman, la cabecera se fija como esta:

QHttpRequestHeader header;

header.setValue( "Authorization", QString( "Basic " ).append( auth.data() ) );

¿Puedo hacer eso con QNAM / QNReq o hay una mejor manera?

¿Fue útil?

Solución

La forma recomendada es conectar a la authenticationRequired señal y establecer las credenciales de allí.

Otros consejos

Pero si quieres hacerlo con sólo ajustar el valor de la cabecera, aquí es cómo se puede hacer lo siguiente:

// HTTP Basic authentication header value: base64(username:password)
QString concatenated = username + ":" + password;
QByteArray data = concatenated.toLocal8Bit().toBase64();
QString headerData = "Basic " + data;
request.setRawHeader("Authorization", headerData.toLocal8Bit());

Simplemente usando qNetworkAccessManager normalmente pero añadir

setRawHeader("Authorization", headerData.toLocal8Bit());

a su solicitud.

Ejemplo:

//authentication

QString concatenated = "admin:admin"; //username:password

QByteArray data = concatenated.toLocal8Bit().toBase64();

QString headerData = "Basic " + data;

QNetworkRequest request=QNetworkRequest(QUrl("http://192.168.1.10/getinfo"));

request.setRawHeader("Authorization", headerData.toLocal8Bit());

networkAccessManager->get(request);

`

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top