如何 post 来自 GAE 的表格?
How to post a form from GAE?
我正在尝试 POST 将表单发送到第 3 方网络服务器。
表格是这样的:
<form method=post action="http://www.domain.com/path/page.do?id=18&localeCode=en-us">
<input type="submit" name="FILTER:name=init" value="Submit" />
</form>
如果我将此 HTML 加载到浏览器并提交表单,Web 服务器将返回正确的页面。如果我使用 Alamofire 从 Swift 提交它,一切都很好。
但在 App Engine 上,使用 urllib2 或 urlfetch 会返回不同的 HTML 页面。
from google.appengine.api import urlfetch
page = urlfetch.fetch(
url="http://www.domain.com/path/page.do?id=18&localeCode=en-us",
payload={"FILTER:name=init" : "Submit"},
method=urlfetch.POST,
headers={"Content-Type": "application/x-www-form-urlencoded"},
deadline=30)
对于有效负载,我尝试将 name=init 编码为 name%3Dinit,但没有任何进一步的成功。
在传递给 urlfetch.fetch
之前,您需要手动对有效负载字典进行 urlencode。请参阅下面文档中的示例。
import urllib
from google.appengine.api import urlfetch
form_fields = {
"first_name": "Albert",
"last_name": "Johnson",
"email_address": "Albert.Johnson@example.com"
}
form_data = urllib.urlencode(form_fields)
result = urlfetch.fetch(url=url,
payload=form_data,
method=urlfetch.POST,
headers={'Content-Type': 'application/x-www-form-urlencoded'})
我正在尝试 POST 将表单发送到第 3 方网络服务器。
表格是这样的:
<form method=post action="http://www.domain.com/path/page.do?id=18&localeCode=en-us">
<input type="submit" name="FILTER:name=init" value="Submit" />
</form>
如果我将此 HTML 加载到浏览器并提交表单,Web 服务器将返回正确的页面。如果我使用 Alamofire 从 Swift 提交它,一切都很好。
但在 App Engine 上,使用 urllib2 或 urlfetch 会返回不同的 HTML 页面。
from google.appengine.api import urlfetch
page = urlfetch.fetch(
url="http://www.domain.com/path/page.do?id=18&localeCode=en-us",
payload={"FILTER:name=init" : "Submit"},
method=urlfetch.POST,
headers={"Content-Type": "application/x-www-form-urlencoded"},
deadline=30)
对于有效负载,我尝试将 name=init 编码为 name%3Dinit,但没有任何进一步的成功。
在传递给 urlfetch.fetch
之前,您需要手动对有效负载字典进行 urlencode。请参阅下面文档中的示例。
import urllib
from google.appengine.api import urlfetch
form_fields = {
"first_name": "Albert",
"last_name": "Johnson",
"email_address": "Albert.Johnson@example.com"
}
form_data = urllib.urlencode(form_fields)
result = urlfetch.fetch(url=url,
payload=form_data,
method=urlfetch.POST,
headers={'Content-Type': 'application/x-www-form-urlencoded'})