Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Twisted python在服务器上发布来自C#程序的消息时出错_C#_Python_Httpwebrequest_Twisted - Fatal编程技术网

使用Twisted python在服务器上发布来自C#程序的消息时出错

使用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

我使用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 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']})