1

我的问题是一般问题。我想向 uC 执行数据发送(大二进制容器文件),它与用 C# 编写的准备好的 html 发送脚本一起工作。

C#代码:

WebClient client = new WebClient();

client.UploadFileAsync(uri, "POST", "C:\\Users\\user1\\file\\to\\the\\firmware\\fw-container.efc"); 

这里的问题是尽管脚本运行,但上传没有成功(甚至没有开始在 Python 中上传)。问题应该出在代码中,因为其他方式上传也可以完成Python代码:

import pycurl  
from cStringIO import StringIO
import urllib2
import simplejson as json

url = 'http://eData/pvi?rName=FirmwareUpload'
req = urllib2.Request(url)
req.add_header('Content-Type','application/json')

c = pycurl.Curl()
c.setopt(c.POST, 1)
c.setopt(c.URL, url)
c.setopt(c.CONNECTTIMEOUT,0)
c.setopt(c.TIMEOUT, 0)
c.setopt(pycurl.FOLLOWLOCATION, 1)
c.setopt(pycurl.MAXREDIRS, 5)
c.setopt(pycurl.NOSIGNAL, 1)

c.setopt(c.HTTPPOST, [("file1", (c.FORM_FILE,"C:\\Users\\user1\\file\\to\\the\\firmware\\fw-container.efc""))])

c.perform()
print "Upload was successful!"
print "Tx JSON:"
print "POST resource"
res = urllib2.urlopen(req)
print "Response:"
str_0 = res.read()

print str_0
c.close()

错误消息在c.perform()行如下所示:

PYCURL ERROR 6 - "Couldn't resolve host 'eData'" 

即使我使用不同的 python 库,我也不知道如何使上传工作。我找到了以下库使用选项: urllib2 使用多种处理数据方式发送(从未尝试过,不知道该怎么做) 请求库(不适用于 2.5 python) 海报库(似乎无法为 python 2.5 安装鸡蛋)和 PyCurl(我去了这个方向)

无论这有多小或与其他图书馆解决方案相关,请提出建议。谢谢!

4

0 回答 0