我是Python的请求部分的新手,在这里遇到了一些麻烦 . 我在Java中有以下示例,它完美地工作...

public class teste {
    //The variable “text” must have all parameters. For instance, it could be
    //-b –m 4 –d –tree removeAll –t TEXT, TEXT, TEXT
    private static void sendPost(String text) throws Exception {

        //Sobek’s URL
        URL url = new URL("http://sobek.ufrgs.br/webservice/sobek.php");
        //Please pay attention to the constant value “data”
        String postData = "data= "+ URLEncoder.encode(text);
        byte[] postDataBytes = postData.getBytes();
        //Connect to the URL
        HttpURLConnection conn = (HttpURLConnection)url.openConnection();
        conn.setRequestMethod("POST");

        conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");

        conn.setRequestProperty("Content-Length", String.valueOf(postDataBytes.length));
        conn.setDoOutput(true);
        //Send the information
        conn.getOutputStream().write(postDataBytes);
        //Read the server response
        Reader in = new BufferedReader(new
        InputStreamReader(conn.getInputStream(), "UTF-8"));
        for (int c; (c = in.read()) >= 0;)
            System.out.print((char)c);

    }
    public static void main(String[] args) throws Exception {
        // TODO Auto-generated method stub
        String params = "-b –m 4 – tree removeAll -t TEXT";
        sendPost(params);
    }

}

但我的软件是用Python编写的,所以我需要转换代码..我这样做了:

sobekURL = "sobek.ufrgs.br/webservice/sobek.php"

file_name = "Livro_MidiasNaEducacao_P1_rev3-cris2107.docx"

text = docx2txt.process(file_name)

parameters = "-b –m 4 – tree removeAll -t " + text

postData = "data=" + urllib.parse.quote_plus(parameters)
postDataBytes = bytearray(postData, 'utf8')

headers={
    "Content-type"  : "application/x-www-form-urlencoded",
    "Content-size"  : str(len(postDataBytes)) 
}
conn = http.client.HTTPConnection(sobekURL)
conn.request("POST",parameters,headers)
response=conn.getresponse()

print(response.status, response.reason)

data=response.read()

print(data)

conn.close()
conn.setRequestProperty();

我有很多错误,1by1解决它..但现在我得到了这个:

Traceback(最近一次调用最后一次):文件“C:\ Users \ alvarosps \ workspace \ SobekMiningCorpus \ AccessWebService.py”,第23行,conn.request(“POST”,参数, Headers )文件“C:\ Users \ alvarosps \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ http \ client.py“,第1239行,请求self._send_request(方法,url,正文, Headers ,encode_chunked)文件”C:\ Users \ alvarosps \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ http \ client.py“,第1250行,在_send_request self.putrequest(方法,网址,**跳过)文件”C:\ Users \ alvarosps \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ http \ client.py“,第1117行,在putrequest中self._output(request.encode('ascii'))UnicodeEncodeError:'ascii'编解码器无法对位置8中的字符'\ u2013'进行编码:序数不在范围内(128)

有人可以帮忙吗?

编辑:我已经将参数参数更改为parameters.encode(“utf-8”)并解决了这个问题..但现在我得到了这个:**

回溯(最近一次调用最后一次):文件“C:\ Users \ alvarosps \ workspace \ SobekMiningCorpus \ AccessWebService.py”,第23行,conn.request(“POST”,“/”,parameters.encode('utf- 8'),headers)文件“C:\ Users \ alvarosps \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ http \ client.py”,第1239行,请求self._send_request(方法,url,正文, Headers ) ,encode_chunked)文件“C:\ Users \ alvarosps \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ _ http \ client.py”,第1285行,在_send_request中self.endheaders(body,encode_chunked = encode_chunked)文件“C: \ Users \ alvarosps \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ http \ client.py“,第1234行,在endheaders中self._send_output(message_body,encode_chunked = encode_chunked)文件”C:\ Users \ alvarosps \ AppData \本地\ Programs \ Python \ Python36 \ lib \ http \ client.py“,第1026行,在_send_output self.send(msg)文件”C:\ Users \ alvarosps \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ http \ client.py“,第964行,在send self.connect()文件”C:\ Users \ alvarosps \ AppData \ Local \ Programs \ Python \ Pytho n36 \ lib \ http \ client.py“,第936行,在connect(self.host,self.port),self.timeout,self.source_address)文件”C:\ Users \ alvarosps \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ socket.py“,第704行,在get_drinfo(host,port,0,SOCK_STREAM)中的res的create_connection中:文件”C:\ Users \ alvarosps \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ socket.py“,第743行,在getaddrinfo中为_socket.getaddrinfo中的res(host,port,family,type,proto,flags):socket.gaierror:[Errno 11001] getaddrinfo failed

**

它与发布的链接不是同一个问题,它使用不同的库,那里的答案没有解决任何问题 .