2009-10-03 65 views
9

我試圖從我的Qt應用程序爲Twitter執行基本身份驗證。我使用QNetworkAccessManager。但是我找不到任何幫助。使用Qt進行基本身份驗證(QNetworkAccessManager)

但我找到了一個名爲qsoapmanager的程序,它通過頭部在base64中傳遞證書。也許我可以在QNAM中通過在QNetowrkRequest中設置標題來做到這一點。但我沒有找到辦法。

在qsoapman源,頭被設置如下:

QHttpRequestHeader header; 

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

我可以做到這一點與QNAM/QNReq或是否有更好的辦法?

回答

29

但是如果你想通過只設置標頭值做到這一點,這裏是你如何能做到這一點:

// 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()); 
+0

這樣做將證明在使用基本身份驗證REST服務的情況下有用的是這樣的:在qauthenticator方法依賴於做服務器額外的初始之旅要求認證,但以上述方式使用它,這次旅行可以避免。感謝這個答案。 – Viren 2011-02-19 05:09:13

1

只需使用qNetworkAccessManager正常,但添加

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

您的要求。

例子:

//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); 

`

相關問題