2017-01-21 18 views
-1

私は以前にWebDavを使用したことはありませんでしたが、最近クライアントからサーバーにファイルをアップロードするように求められました。Pythonを使用してWebDavに接続する際の問題

サーバーの場所:\ 123.456.789.012 \何か

を、私はこの

私のクライアントは私に次の形式で、サーバーに関する情報を与えている行うためのpythonを使用することを決めたように、このproccessは自動化されなければなりません

ユーザー名:ユーザー

はパスワード:somedomain

01:

ドメインを渡します

私は仕事をするeasywebdavフレームワークを使用しようとしています、しかし、私は次のような結果を得る: コード:PROPFIND:

webdav = easywebdav.connect(
    host='123.456.789.012/Something', 
    username='user', 
    port=80, 
    protocol="http", 
    password='pass' 
) 

print(webdav.ls()) 

そして、私が手に例外が

操作です。

期待コード:207マルチステータス、301は永久

実際のコード移動:401権限

を私はすでに、複数のフレームワークを試してみましたが、それらはすべて同じように失敗するので、すべてを正しく理解していない可能性がありますしかし、私は正常に動作するように、Mac OS X webdavクライアントの組み込みFinderを介して同じ資格情報を使用してサーバに正常に接続しています。

質問のフォーマットには申し訳ありませんが、詳細が不足している可能性があります。現在、この問題を解決するために数時間後には絶望的です。コメントで何かお気軽にお問い合わせください!

+0

こんにちは、あなたは 'のWebDAV = easywebdav.connect( ホスト= '123.456.789.012'、 名= 'ユーザー'、 ポート= 80、 プロトコル= "HTTP"、 パスワード= 'パス' 試すことができ、パス= '/何か' ) '? –

+0

@ piotr-dawidiukよく進んでいます。 'webdav.ls("。 ")の' webdav.ls() 'に対して、' webdav.ls( "/ Something") 'エラー401のエラー500が返されます。何か案は? – tna0y

+0

UPDATE:500は単なる問題でした。今私は401のパスを取得します。 – tna0y

答えて

0

私の問題の解決策が見つかりました。私のOS X(WebdavFS)がどのように接続しているかをWiresharkで調べたところ、サーバはMicrosoft IIS 7.5であり、Basic Authの代わりにNTLM Authが必要であることがわかりました。幸いなことに、アプリが比較的小さいという事実のためにNTLM AuthをサポートするPythonライブラリが見つかりませんでした。私はneon libraryを使ってC++に切り替えました。

関連する問題