浏览代码

Fix up urllib for modelverse.py

Bentley James Oakes 7 年之前
父节点
当前提交
d74c0c99ed
共有 1 个文件被更改,包括 17 次插入3 次删除
  1. 17 3
      wrappers/modelverse.py

+ 17 - 3
wrappers/modelverse.py

@@ -4,6 +4,16 @@ import modelverse_SCCD as modelverse_SCCD
 import time
 import threading
 
+import sys
+if sys.version_info[0] < 3:
+    from urllib2 import urlopen as urlopen
+    from urllib2 import Request as Request
+    from urllib import urlencode as urlencode
+else:
+    from urllib.request import urlopen as urlopen
+    from urllib.request import Request as Request
+    from urllib.parse import urlencode as urlencode
+
 # Exceptions
 class ModelverseException(Exception):
     pass
@@ -495,17 +505,21 @@ def service_stop():
 
 def service_get(port):
     """Get the values on the specified port."""
-    val = json.loads(urllib2.urlopen(urllib2.Request("http://%s" % controller.address, urllib.urlencode({"op": "get_output", "taskname": port}))).read())
+
+    data = urlencode({"op": "get_output", "taskname": port}).encode()
+    val = json.loads(urlopen(Request("http://%s" % controller.address, data)).read())
     return val
 
 def service_set(port, value):
     """Set a value on a specified port."""
     if isinstance(value, type([])):
         value = json.dumps(value)
-        urllib2.urlopen(urllib2.Request("http://%s" % controller.address, urllib.urlencode({"op": "set_input", "data": value, "taskname": port}))).read()
+        data = urlencode({"op": "set_input", "data": value, "taskname": port}).encode()
+        urlopen(Request("http://%s" % controller.address, data)).read()
     else:
         value = json.dumps(value)
-        urllib2.urlopen(urllib2.Request("http://%s" % controller.address, urllib.urlencode({"op": "set_input", "value": value, "taskname": port}))).read()
+        data = urlencode({"op": "set_input", "value": value, "taskname": port}).encode()
+        urlopen(Request("http://%s" % controller.address, data)).read()
 
 def service_poll(port):
     """Checks whether or not the Modelverse side has any input ready to be processed."""