簡體   English   中英

Python:Urllib.urlopen非數字端口

[英]Python: Urllib.urlopen nonnumeric port

對於以下代碼

theurl = "https://%s:%s@members.dyndns.org/nic/update?hostname=%s&myip=%s&wildcard=NOCHG&mx=NOCHG&backmx=NOCHG" % (username, password, hostname, theip)

conn = urlopen(theurl) # send the request to the url
print(conn.read())  # read the response
conn.close()   # close the connection

我收到以下錯誤

File "c:\Python31\lib\http\client.py", line 667, in _set_hostport
    raise InvalidURL("nonnumeric port: '%s'" % host[i+1:])

有任何想法嗎???

您可能需要對密碼進行url編碼。 如果密碼恰好包含'/',您將看到類似的錯誤。

這是一個本地示例(實際值已編輯):

>>> opener
<urllib.FancyURLopener instance at 0xb6f0e2ac>
>>> opener.open('http://admin:somepass@example.com')
<addinfourl at 3068618924L whose fp = <socket._fileobject object at 0xb6e7596c>>
>>> opener.open('http://admin:somepass/a@example.com')
*** InvalidURL: nonnumeric port: 'somepass'

編碼密碼:

>>> opener.open('http://admin:somepass%2Fa@example.com')

您可以使用urllib.quote('somepass/a', safe='')進行編碼。

我同意muckabout,這就是問題所在。 您可能習慣在瀏覽器中使用它,這會導致瀏覽器對主機進行身份驗證。 您可能應該在第一個@符號之前刪除所有內容。

看看urllib文檔 ,特別是FancyURLOpener,它可能會解決您的身份驗證問題。

錯誤消息顯示您正在准備的URL存在一些問題。 打印並檢查這是否是有效的網址。

假定HTTP URL中的“:”位於端口號之前。 您正在放置一個非數字的帳戶名稱。 它必須是整數端口值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM