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」を出力できないのに、ブラウザから送信されたときに出力できるのはなぜですか。どうすれば修正できますか?