CURL:客户端和服务器通信Windows c/java
问题描述:
我在curl比较新,我想在C中使用curl发送字符串。另一方面,作为服务器,我有一个使用HttpServlet监听HTTP请求的Java程序。 当我用curl发送一些数据时,我发现服务器获取它,但没有发送的格式。 例如,如果我送数据: “8D015678” 在服务器侧请求内容将是:56,68,48,49,53,54,55,56 这里是客户机代码(C):CURL:客户端和服务器通信Windows c/java
int status = 0;
char * ip_to_connect = "http://127.0.0.1:5004/unilateral
const char * request = "8D015678";
status = curl_easy_setopt(curl, CURLOPT_URL, ip_to_connect);
if (!status)
{
status = curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, &writeCallback);
}
if (!status)
{
curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, (long) strlen(request));
}
if (!status)
{
status = curl_easy_setopt(curl, CURLOPT_POSTFIELDS, request);
}
if (!status)
{
status = curl_easy_perform(curl);
}
这里是服务器(JAVA)的解析器代码:
System.out.println("[requestHandlerFactory] header is not Content");
int contentLength = request.getContentLength();
this.content = new byte[contentLength];
try {
ServletInputStream input = request.getInputStream();
int read = input.read(content, 0, contentLength);
System.out.println("[doPost] contentLength = " + contentLength + "data = " + content[0]);
这是否意味着我需要从ASCI到符号转换器? 我认为卷曲数据是按原样传递的?我错过了什么? 如果我想要我的数据,例如。 8D015678由服务器获取为8D015678我应该如何发送它? 请详细解释数据如何传递以及如何处理curl中的客户端和接收这些请求的服务器 提前致谢。希望它很清楚
答
InputStream.read(..)
当流结束时返回-1,否则该值可以平凡地转换为char。返回值和错误代码的这种组合是旧的,而且很不幸,今天的设计也会有所不同。只需将其转换为字符并进行处理即可。
的官方文档是https://docs.oracle.com/javase/7/docs/api/java/io/InputStream.html#read()
见 http://www.tutorialspoint.com/java/io/inputstream_read.htm 的工作示例。
的实质是:
// new input stream created
is = new FileInputStream("C://test.txt");
System.out.println("Characters printed:");
// reads till the end of the stream
while((i=is.read())!=-1)
{
// converts integer to character
c=(char)i;
// prints character
System.out.print(c);
}