1

そこで、iPhone 経由でサーブレットに接続し、HTTP を使用します。私は実際にマルチプレイヤーゲームを開発しており、HTTP get in java (doGet) を介して特定のデータを iPhone に送信する方法を知りたいと考えています。iphone(cocos2d-x)でlibcurlを使っています。

私のコードの設定方法は次のとおりです。

size_t write_data(void* buffer, size_t size, size_t nmemb, void *data)
{
    //do stuff with data        
}

//main or some init method
CURL *curl;
CURLcode res;
curl = curl_easy_init();
if(curl)
{
    char *data = "hi imma get=yeah";
    curl_easy_setopt(curl, CURLOPT_URL, "http://whatever.com");
    curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data); 

    res = curl_easy_perform(curl);
    if(res != CURLE_OK)
    {
              CCLOG("WELP BETTER DO SOMETHING ERROR");
    }

    curl_easy_cleanup(curl);
}

それで、私が知りたいのは、JavaのdoGetメソッドで応答を使用して、上記で定義したwrite_functionに文字列を送信する方法です? のように、doGet メソッドの応答パラメータはどうすればよいでしょうか?

参考までに、doGet メソッドを次に示します。

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws    ServletException, IOException
 {
    System.out.println("GET METHOD CALLED");

 }

では、write_function にデータを渡すには、その応答をどうすればよいでしょうか。

おかげで、すべての入力を !!

4

1 に答える 1

1

以下に示すように、応答のライターを使用して。

protected void doGet(HttpServletRequest request, HttpServletResponse response) 
    throws ServletException, IOException
{
    // tell response what format your output is in, we select plain text here
    response.setContentType("text/plain;charset=UTF-8");
    // ask the response object for a Writer object
    PrintWriter out = response.getWriter();
    try {
        // and use it like you would use System.out.  Only, this stuff gets sent 
        //to the client
        out.println("GET METHOD CALLED");
    } finally {
        // housekeeping: ensure that the Writer is closed when you're ready.
        out.close();
    }
}

場合によっては、ストリームを使用する方が簡単です。それも可能ですが、Writer と OutputStream の両方を同時に開くことはできません

protected void doGet(HttpServletRequest request, HttpServletResponse response) 
    throws ServletException, IOException
{
    response.setContentType("text/plain;charset=UTF-8");
    // ask the response object for an OutputStream object
    OutputStream os = response.getOutputStream();

    try {
        // output some stuff, here just the characters ABC
        os.write(new byte[]{65,66,67});
    } finally {            
        os.close();
    }

}

詳細を知りたい場合は、oracle.com の公式 Java EE チュートリアルのサーブレットの章など、Web 上で利用可能なサーブレットに関するチュートリアルがたくさんあります。

于 2012-10-20T01:22:02.140 に答える