java-me:HttpConnection 无法写入 Instagram API 请求的正文

Posted

技术标签:

【中文标题】java-me:HttpConnection 无法写入 Instagram API 请求的正文【英文标题】:java-me: HttpConnection fails to write to body for Instagram API request 【发布时间】:2013-09-02 16:02:23 【问题描述】:

我有一个在 J2ME 上运行的应用程序需要访问 Instagram API。具体来说,我需要发表评论。这是一个 Post 方法。因此,我尝试使用 HttpConnection.setRequestProperty() 将“text”参数添加到请求的正文中,但这似乎不起作用,因为 Instagram 无法识别该参数存在。我认为这种方法无法将参数写入 Http 请求的正文。知道如何在 j2me 中完成这项工作吗?

这是我的代码:

    InputStream is = null;

    ByteArrayOutputStream bos = new ByteArrayOutputStream();

    byte[] response = null;
    HttpConnection connection = null;

    String url = "";
    try 
      url = "https://api.instagram.com/v1/media/" + mediaId + "/comments?access_token="+InstagramAPIUtil.accessTokenTest;// POST
      url = Util.urlEncodeSpaces(url);


        System.out.println(url);
        connection = (HttpConnection)Connector.open(url,Connector.READ_WRITE);

        connection.setRequestMethod(HttpConnection.POST);

        connection.setRequestProperty("text", comment);

        if (connection.getResponseCode() == HttpConnection.HTTP_OK) 
            is = connection.openInputStream();

            if (is != null) 
                int ch = -1;

                while ((ch = is.read()) != -1) 
                    bos.write(ch);
                

                response = bos.toByteArray();
            
            System.out.println("response: "+new String(response));
            System.out.println("request: "+connection.getRequestProperty("text"));
            return true;
        

这是我从 Instagram 获得的反馈:

"meta":"error_type":"APIInvalidParametersError","code":400,"error_message":"Missing 'text'"

【问题讨论】:

【参考方案1】:

我在HTTP领域没有太多经验,但我认为您需要写入可以从connection获得的输出流。我看不到您在代码中的何处发送实际数据。

  HttpURLConnection c = (HttpURLConnection) new URL("").openConnection();
  OutputStream out = c.getOutputStream();
  InputStream in = c.getInputStream();

【讨论】:

在此处查看文档:docs.oracle.com/javame/config/cldc/ref-impl/midp2.0/jsr118/…。当我调用 connection.getResponseCode() 时,它会切换到连接状态。 在您提供的链接中,您应该阅读“使用 POST 和 HttpConnection 的示例”段落。我仍然看不到您的输出流来自哪里。 哦,我明白你现在在说什么了。非常感谢,这正是我需要的!

以上是关于java-me:HttpConnection 无法写入 Instagram API 请求的正文的主要内容,如果未能解决你的问题,请参考以下文章

黑莓 JDE HTTPConnection 问题

如何在 Jetty 9 中将 HTTPConnection 升级为 WebsocketConnection?

在 J2ME 中,如何使用 HttpConnection 设置 Header 信息?

黑莓 - 使用EDGE网的HttpConnection

为 Blackberry 或 J2ME (HttpConnection) 寻找经过验证的库

HTTP连接参数