2016-08-02 16 views
0

で乱数を返します。WCFサービスは、常に私はC#で書かれたWCFサービスを持つレスポンスボディ

namespace MyServices 
{ 
    [ServiceContract] 
    public interface IMyService 
    { 
     [OperationContract] 
     [WebGet(UriTemplate = "/foo/{param}")] 
     string foo(string param); 
    } 
} 

public class MyService : IMyService 
{ 
    public string foo(string param) 
    { 
     //Do stuff with param 
     return "Some processed data"; 
    } 
} 

私は、このサービスを消費するたびに、それは応答の各行が常に先行しているという事実を除いて正常に動作します数字で(時には文字付きの数字で)。そして、最後の行は常に以下は0

は、Javaで書かれたこのサービスを消費クライアントである:

public class Main 
{ 
    public static void main(String[] args) 
    { 
     try 
     { 
      Socket soc = new Socket(InetAddress.getByName("<SOME IP ADDRESS>"), 80); 
      PrintWriter out = new PrintWriter(soc.getOutputStream()); 
      String headers = "GET /MyService.svc/foo/some_data HTTP/1.1\r\n" 
          + "Host: <SOME HOST>\r\n" 
          + "Content-Type: text/plain;charset=utf-8\r\n" 
          + "Content-Length: 0\r\n\r\n"; 

      out.print(headers); 
      out.flush(); 

      BufferedReader in = new BufferedReader(new InputStreamReader(soc.getInputStream())); 
      String response; 

      while((response = in.readLine())!=null) 
      { 
       //Do something with the response    
       System.out.println(response); 
      } 
      out.close(); 
      soc.close(); 
     catch (UnknownHostException e) 
     { 
      System.err.println(e.getMessage()); 
     } 
     catch (IOException e) 
     { 
      e.printStackTrace(); 
     } 
    } 
} 

これは出力以下になります。まず

HTTP/1.1 200 OK 
Cache-Control: private 
Transfer-Encoding: chunked 
Content-Type: text/plain;charset=utf-8 
Server: Microsoft-IIS/8.0 
X-AspNet-Version: 4.0.30319 
X-Powered-By: ASP.NET 
Set-Cookie: ARRAffinity=2e5dd814a4cb78f8a5825d56c5879cd18fa384d20597b10f3c685ffe2cff1f53;Path=/;Domain=<SOME DOMAIN NAME> 
Date: Tue, 02 Aug 2016 22:53:25 GMT 

15 
"Some processed data" 
0 

を私は考えました数字は次の行の文字数を表し、0はメッセージ本文の終わりを示しますが、そうではないようです。

すべてのヘルプは高く評価され、ありがとう:)

答えて

1

を転送エンコードをチャンクされたので、これは(https://en.wikipedia.org/wiki/Chunked_transfer_encoding)です。 15はこのチャンク内で21文字を意味するHEXで、0が終了マーカーとして使用されます。

+0

ああ、それは意味があります、私はTransfer-Encodingを扱う機能を追加するだけです。ありがとう –

+0

代わりにJava.net.HttpURLConnectionを使用していないのはなぜですか?エンコーダーモードや接続のような、ぎこちないものを扱います。 –

+0

ええ、私は代わりにそれを使用して終了しました。 –

関連する問題