我遇到了一个需要将一个显然简单的Java代码翻译成Python的情况。在
Java代码只是对一个包含三个参数的URL发出POST
请求。代码如下:
{
java.io.ByteArrayOutputStream baos = new java.io.ByteArrayOutputStream();
String content = "phonenr=" + smsPhone + "&smstxt=" + smsMessage + "&Submit=SendSms";
java.net.URL url = new java.net.URL(smsGatewayPath);
java.net.HttpURLConnection urlCon = (java.net.HttpURLConnection) url.openConnection();
urlCon.setReadTimeout(5000);
urlCon.setDoInput(true);
urlCon.setDoOutput(true);
urlCon.setUseCaches(false);
urlCon.setRequestMethod("POST");
urlCon.setRequestProperty("Content-Length", Integer.toString(content.length()));
urlCon.setRequestProperty("Content-Type", "text/xml;charset=UTF-8");
urlCon.setRequestProperty("Authorization", "Basic " + authStringEncoded);
java.io.DataOutputStream output = new java.io.DataOutputStream(urlCon.getOutputStream());
output.writeBytes(content);
output.flush();
output.close();
java.io.DataInputStream input = new java.io.DataInputStream(urlCon.getInputStream());
int bufSize = 4096;
byte[] bytesRead = new byte[bufSize];
int bytesReadLength = 0;
while ((bytesReadLength = input.read(bytesRead)) > 0) {
baos.write(bytesRead, 0, bytesReadLength);
}
input.close();
baos.close();
return org.apache.commons.lang.StringEscapeUtils.unescapeJava(baos.toString("UTF-8"));
}
现在,我尝试在Python中发出相同的请求,将完全相同的数据发布到同一个URL:
^{pr2}$现在,我得到的输出是:
<html>
<head>
<title>TopexGateway</title></head>
<body bgcolor="#00CCFF" text="#000000">
ERROR
</body>
</html>
http://ip/name.cgi
200
现在我有点搞不懂为什么这不起作用,因为当我发出一个CURL请求时,一切似乎都有效:
curl -v --data "phonenr=xxxxx&smstxt=Test&Submit=SendSms" http://admin:password@ip/name.cgi
Here是从CURL接收的内容和使用Python接收到的here的粘贴。在
谁能告诉我我的python版本有什么问题吗?在
那封信
e
:人类看不见,电脑的所有不同。在相关问题 更多 >
编程相关推荐