我正在尝试使用String[]
在j2me中发送ObjectOUputStream
数组,但我一直收到此错误,
java.lang.IllegalArgumentException:不是HTTP URL
这是我的代码:
OutputStream os=null;
HttpConnection hc= null;
ObjectOutputStream oj=null;
//get the URL
String serverURL=entry.getUrl();
hc=(HttpConnection)Connector.open(serverURL, Connector.READ_WRITE, true);
hc=(HttpConnection)Connector.open(serverURL);
hc.setRequestMethod (HttpConnection.POST);
hc.setRequestProperty ("Content-Type", "application/x-www-form-urlencoded");
hc.setRequestProperty ("User-Agent", "Profile/MIDP-2.0 Configuration/CLDC-1.0");
hc.setRequestProperty ("Content-Language", "en-US");
System.out.println ("Posting to the URL: " + entry.getVectorParams());
//open the output stream to send the post parameters
//os=hc.openOutputStream();
oj=(ObjectOutputStream)hc.openOutputStream();
//writing post parameters
String[] bg=entry.getVectorParams();
oj.writeObject(bg);
请提出建议。
我检查了我的网址,这是正确的,关于Connector.open(),我在这里粘贴了两次,而不是在我的实际代码中。还有什么我做错了吗?
System.out.println("Posting to the URL: " + entry.getVectorParams())
,这只打印帖子参数,我在这里传递了serverurl:
String serverURL=entry.getUrl();
hc=(HttpConnection)Connector.open(serverURL, Connector.READ_WRITE, true);
我的服务器网址为:http://localhost:8080/Web/gServer.jsp
答案 0 :(得分:1)
serverURL
变量的值不得为有效网址。尝试将其打印出来并进行检查。
你有这个调试声明:
System.out.println ("Posting to the URL: " + entry.getVectorParams());
但是打印出params而不是url。您应该打印出serverURL
变量。
此外,您连续两次致电Connector.open()
。没有必要这样做。
更新:我还认为您将POST参数写入连接OutputStream
的方式可能存在问题。我不会使用ObjectOutputStream
。有关进行J2ME POST调用的示例,请参阅something like this。基本上,您创建String
POST参数,以&
分隔,然后使用String.getBytes()
转换为byte[]
以写入OutputStream
。