0

我正在尝试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);

请给个建议。

我检查了我的 URL,它是正确的,关于 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

4

1 回答 1

1

您的serverURL变量的值不能是有效的 URL。尝试打印出来,然后检查。

你有这个调试语句:

System.out.println ("Posting to the URL: " + entry.getVectorParams());

但那是打印出参数,而不是 url。您应该打印出serverURL变量。

此外,您Connector.open()连续两次调用。没有必要这样做。

更新:我还认为您将 POST 参数写入连接的OutputStream. 我不会使用ObjectOutputStream. 有关进行 J2ME POST 调用的示例,请参阅类似的内容。基本上,您制作一个StringPOST 参数,以 . 分隔&,然后用于String.getBytes()转换为 abyte[]以写入OutputStream.

于 2012-12-30T22:48:25.953 回答