1

Javaサービスが受信するURL、つまり「http://192.168.220.12:5000 」をリクエストする必要があります。

次の文字列を本文として

<?xml version='1.0'?><!DOCTYPE svc_init SYSTEM 'ABCD.DTD'><svc_init ver='3.3.0'><hdr ver='3.3.0'><client><id>xxx</id><pwd>xxx</pwd></client></hdr><aaaa ver='3.3.0'><trans_id>1</trans_id><request_type type='2'/><l_hor_acc type='HIGH'/></aaaa></svc_init>

FirefoxブラウザからRESTClientを使用して正常に実行できます。次の画像を参照してください。 ここに画像の説明を入力してください ただし、次のC#コードを介して送信すると、次のエラーが発生します。

 java.lang.StringIndexOutOfBoundsException: String index out of range: -1
    at java.lang.String.substring(Unknown Source)
    at Creader.run(Creader.java:42)

C#コードは次のとおりです。

xmlData= "<?xml version='1.0'?><!DOCTYPE svc_init SYSTEM 'ABCD.DTD'><svc_init ver='3.3.0'><hdr ver='3.3.0'><client><id>xxx</id><pwd>xxx</pwd></client></hdr><aaaa ver='3.3.0'><trans_id>1</trans_id><request_type type='2'/><l_hor_acc type='HIGH'/></aaaa></svc_init>";

address = "http://192.168.220.12:5000";

using (var client = new WebClient())
{
  client.UploadData(address , Encoding.ASCII.GetBytes(xmlData));
}

私はここで何が間違っているのですか?

私もフォローしてみましたが、何もうまくいきませんでした。1)別の方法を使用してxmlDataをbyte[]に変換します。2)Encoding.ASCII.GetBytesの代わりにEncoding.UTF8.GetBytesを使用しました。3)client.UploadData ..の代わりにclient.UploadString(new Uri(mlcAddress)、xmlData)を使用しました。

4

3 に答える 3

0

コードとRESTクライアントが送信しているものとの間で有線のバイトを比較する必要があります。RESTクライアントがヘッダーと本文を1つのパケットで送信しているのに対し、.NETは本文とは別にリクエストヘッダーを送信している可能性があります。これにより、サーバーはこれを予期していないためにスローします。

wiresharkを使用してトラフィックをスニッフィングするか、これがlocalhostの場合は、firefoxでFirebugを使用し、.netの場合はsystem.netトレースログを作成します。「system.netでトレース」をグーグルで検索して、その方法に関する情報を入手してください。

于 2012-10-19T07:14:01.930 に答える
0

次のコード(TCPソケット)が機能しました

oSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream,
                ProtocolType.Tcp);
System.Net.IPAddress oIPAddress = System.Net.IPAddress.Parse(ip);
System.Net.IPEndPoint oEndPoint = new System.Net.IPEndPoint(oIPAddress, port);
oSocket.Connect(oEndPoint);

Object oData = xmlData;
byte[] bData = System.Text.Encoding.ASCII.GetBytes(oData.ToString());
oSocket.Send(bData);
于 2012-09-04T08:39:42.087 に答える
0
            WebRequest request = WebRequest.Create("http://192.168.220.12:5000");
            request.Method = "POST";
            string xmlData= "<?xml version='1.0'?><!DOCTYPE svc_init SYSTEM 'ABCD.DTD'><svc_init ver='3.3.0'><hdr ver='3.3.0'><client><id>xxx</id><pwd>xxx</pwd></client></hdr><aaaa ver='3.3.0'><trans_id>1</trans_id><request_type type='2'/><l_hor_acc type='HIGH'/></aaaa></svc_init>";
            byte[] byteArray = Encoding.UTF8.GetBytes (xmlData);
            request.ContentType = "application/x-www-form-urlencoded";
            request.ContentLength = byteArray.Length;
            Stream dataStream = request.GetRequestStream ();
            dataStream.Write (byteArray, 0, byteArray.Length);
            dataStream.Close ();
            WebResponse response = request.GetResponse ();
            dataStream = response.GetResponseStream();                
            StreamReader reader = new StreamReader (dataStream);
            string responseFromServer = reader.ReadToEnd ();
            reader.Close ();
            dataStream.Close ();
            response.Close ();
于 2012-08-27T06:41:57.640 に答える