使用Twisted python在服务器上发布来自C#程序的消息时出错
我使用C#.NET 4.0将消息发布到服务器的方法 我的服务器代码提供一个表单,用于键入和打印您在表单中键入的内容使用Twisted python在服务器上发布来自C#程序的消息时出错,c#,python,httpwebrequest,twisted,C#,Python,Httpwebrequest,Twisted,我使用C#.NET 4.0将消息发布到服务器的方法 我的服务器代码提供一个表单,用于键入和打印您在表单中键入的内容 from twisted.web.server import Site from twisted.web.resource import Resource from twisted.internet import reactor from twisted.web.error import NoResource import cgi class DynamicPag
from twisted.web.server import Site
from twisted.web.resource import Resource
from twisted.internet import reactor
from twisted.web.error import NoResource
import cgi
class DynamicPage(Resource):
def render_GET(self, request):
return '<html><body><form method="POST"><input name="the-field" type="text" /></form></body></html>'
def render_POST(self, request):
return '<html><body>You submitted: %s</body></html>' % (cgi.escape(request.args["the-field"][0]),)
root = Resource()
dynamic = DynamicPage()
root.putChild("fool", dynamic)
factory = Site(root)
reactor.listenTCP(7777, factory)
reactor.run()
我认为服务器上的错误或我使用的ContentType不正确。
你能帮助我吗。
感谢您的帮助。所以您遇到的问题是:
KeyError: 'the-field'
这是因为您的客户正在发布:
Data has Posted
该post数据中没有表单字段。你可能想做两件事
首先,使您的服务器对错误输入更加健壮。它已经有点健壮了:错误的输入会生成一个500,但服务器会继续运行并处理未来的请求。不过,您可能希望生成一个更有用的错误页面,以帮助客户找出他们做错了什么。因此,请尝试处理KeyError:
def render_POST(self, request):
try:
value = request.args["the-field"][0]
except KeyError:
value = "<missing the-field value>"
return '<html><body>You submitted: %s</body></html>' % (cgi.escape(value),)
您可以在Python中使用urllib.urlencode
生成此代码,例如:
urllib.urlencode({'the-field': ['some value']})
def render_POST(self, request):
try:
value = request.args["the-field"][0]
except KeyError:
value = "<missing the-field value>"
return '<html><body>You submitted: %s</body></html>' % (cgi.escape(value),)
the-field=%5B%27some+value%27%5D
urllib.urlencode({'the-field': ['some value']})