0

GET メソッドを使用して HTTP 接続を開始する Java プログラムがあります。次のようになります。

String urlString = "http://10.205.110.250/cgiApp?envVariable";
URL url = new URL(urlString);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");

このコードが実際に機能することはわかっていますが、ここが難しいところです...次のような C++ で記述された CGI アプリがあります。

int main() {
    char* url = getenv("QUERY_STRING");
    int pipe = open(PATH_TO_FIFO, O_WRONLY);
    write(pipe,url,256);
    close(pipe);
    return 0;
}

また、QUERY_STRING を受け取り、それを出力するために実行されるプログラム:

int main () {
    char url[256];
    int pipe;
    pipe = open(PATH_TO_FIFO, O_RDONLY);
    read(pipe,url,256);
    close(pipe);
    cout << url << endl;
    return 0;
}

HTTP 要求をブラウザーに入力すると、C++ アプリが正しく動作することを確認しました。たとえば、私が入力した場合

http://10.205.110.250/cgiApp?envVariable 

ブラウザに接続し、受信プログラムが実行されていると、「envVariable」が出力されます

ただし、Java プログラムを実行すると、ぎこちなく出力されるか、まったく出力されません (ただし、返されます)。私が行った予備調査から、Java String 変数が C++ と互換性がないか、同じ方法でエンコードされていない可能性があるようです。私の質問は、Java プログラムから送信されたときに C++ プログラムが「envVariable」を出力できないのに、ブラウザから送信されたときに出力できるのはなぜですか。どうすれば修正できますか?

4

2 に答える 2