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); 
     }