从Appengine向Mongohq发布请求

时间:2013-09-20 21:46:16

标签: java google-app-engine mongodb post mongohq

我正在尝试使用post从我的AppEngine向mongohq服务器发送rest api请求。

我使用此代码:

public static void post(String id, String context)
{
  String urlString = "https://api.mongohq.com/databases/db/collections/collection/documents?_apikey=XXXXXXXXXX";
  String data = "{\"document\" : {\"_id\": \"" + id+ "\", \"context\":" + context +"}}";
  try
  {
    URL url = new URL(urlString);
    HttpURLConnection connection = (HttpURLConnection) url.openConnection();

    connection.setDoOutput(true);
    connection.setDoInput(true);
    connection.setInstanceFollowRedirects(false);
    connection.setRequestMethod("POST");
    connection.setRequestProperty("Content-Type", "application/json");
    connection.setRequestProperty("charset", "utf-8");
    connection.setRequestProperty("Content-Length", "" + Integer.toString(data.getBytes().length));
    connection.setUseCaches(false);

    DataOutputStream wr = new DataOutputStream(connection.getOutputStream());
    wr.writeBytes(data);
    wr.flush();
    wr.close();
    System.out.println(connection.getResponseMessage());
    connection.disconnect();
  }
  catch (Exception e)
  {
      System.out.println("postToMongo: "+ e);     
  }
}

它从Appengine外部完美运行,但是当我从Appengine内部做同样的事情时,没有任何东西被发送到mongodb。

该函数在Appengine的内部和内部都打印OK,但只有在Appengine外部使用此功能时,数据才会显示在数据库中。

此外,一个简单的jave get函数可以在Appengine的内外工作。

任何人都可以帮我解决这个问题吗? 我寻找一种从Appengine里面发布到Mongohq的方法。

谢谢

1 个答案:

答案 0 :(得分:0)

试试这个:

 OutputStreamWriter writer;
 writer = new OutputStreamWriter(connection.getOutputStream(), "UTF-8");
 writer.write(message);
 writer.close();