6

私はしばらく Poco Net ライブラリで遊んでいますが、とてもいいです。とても便利で分かりやすいです。

プロキシアドレスを設定できましたが、ちゃんと 407 Proxy authorization required と表示されています。私はそれを考え出した

HTTPRequest req(HTTPRequest::HTTP_GET, path, HTTPMessage::HTTP_1_1);
req.setCredentials(scheme, authInfo);

スキームでは「basic」、「plaintext」、authInfo では「user:password」などの値を試しました。うまくいかないようです。Google は役に立ちません。

Poco Netを使ってこれをやった人はいますか?または、使用法は明らかであり、一般的にプロキシ認証に対する無知のために機能させることができませんか? ご意見をお聞かせください。

EDIT:もう少し遊んだ後、リモートサーバーが認証情報がログインすることを期待しているときに setCredentials 関数が使用されると思います。Poco Net ライブラリを使用してプロキシ認証を行う方法を見つけることができませんでした。ただし、プロキシサーバーとポートを設定できました。これは、認証なしのプロキシ サーバーのみが存在する場合の結果です。

HTTPClientSession session(uri.getHost(), uri.getPort());
HTTPRequest req(HTTPRequest::HTTP_GET, path, HTTPMessage::HTTP_1_1);
session.setProxy("host", port);
session.sendRequest(req);

助けが必要。

編集: @StackedCrooked によって提案されたソリューションに基づいて、リクエストを行う前にリクエスト ヘッダーにプロキシ認証の詳細を設定しようとしました。来て、再度リクエストを行います。どちらの方法でも、同じ 407 エラーが発生し続けました。私の現在のコードは次のようになります。

HTTPClientSession session(uri.getHost(), uri.getPort());
HTTPRequest req(HTTPRequest::HTTP_GET, path, HTTPMessage::HTTP_1_1);
session.setProxy("10.7.128.1", 8080);
req.set("Proxy-Authentication", "Basic bGVlbGE6bGVlbGExMjM=");
session.sendRequest(req);
4

2 に答える 2

2

おそらく、HTTP ヘッダーに Proxy Authorization フィールドを追加する必要があります。Poco の HTTPRequest クラスには、これ専用のメソッドがありません。ただし、 NameValueCollection クラスをパブリックに継承するため、次のように設定できます。

req.set("Proxy-Authorization" , "Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==");

QWxhZGRpbjpvcGVuIHNlc2FtZQ==「Aladdin:open sesame」の base64 エンコード バージョンはどこにありますか。

HTTP プロトコルについて少し学べば、これらの問題の多くは簡単になります。私は今、主に自分自身に説教しています:)

于 2009-08-25T12:40:47.433 に答える
1

私はこれを自分で使用したことはありませんが、HTTPBasicCredentialsクラスを見たことがありますか? 認証メソッドを介して req.setCredentials への呼び出しをラップします。次のような結果になります。

HTTPRequest req(HTTPRequest::HTTP_GET, path, HTTPMessage::HTTP_1_1);
HTTPBasicCredentials cred("user", "password");
cred.authenticate(req);
于 2009-08-25T11:18:12.950 に答える