我有一个使用 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++ 不兼容,或者它的编码方式不同。所以我的问题是,为什么我的 C++ 程序在从 Java 程序发送时不能打印出“envVariable”,但从浏览器发送时可以,我该如何修复它?