情况是这样的,现在在开发一个短信提示的项目。短信服务平台由第三方提供,当用户回复短信到该平台的时候,该平台会发送一段XML到我方。
对方提供的java的demo如下
介绍:我方推送过去的xml格式的上行字符串,参照如下
String str="<?xml version='1.0' encoding='GBK'?>" +
"<delivers>" + "<deliver><corp_id>test</corp_id><mobile>13860497631</mobile><ext>2010</ext><time>2010-07-02 00:00:00</time><content>您好tuisong测试222</content></deliver>" +
"</delivers>";
1.通过访问合作方给提供url地址,调用到合作方的接收类,然后我方推送上行信息的xml字符串过去,合作方接收
2.此条xml字符串,是存在requset的内存里
3.需要接收方先取得request对象(注意这里request对象无参数,是直接存在request内存里,需要先从request里获取输入流,然后进行读流操作,读出推送内容)参考如下:
InputStream in = request.getInputStream();
BufferedInputStream buf = new BufferedInputStream(in);
byte[] buffer = new byte[1024];
StringBuffer data =new StringBuffer();
int a ;
while((a = buf.read(buffer))!= -1){
    data.append(new String(buffer,0,a,"gbk"));
}
System.out.println(data.toString());本人在线程里写的读取代码如下:function TOtherSMS.ReadSMS(var SMSTxt, Phone: string): Boolean;
var
  str: TStringList;
  i, rCode: Integer;
  tXML: TXMLDocument;
  tNode, cNode: IXMLNode;
  DocIntf : IXMLDocument;
  Stream, RStream: TStream;
begin
  Result := False;  try
    tXML := TXMLDocument.Create(nil);
    Stream := TStream.Create;
    Stream := HttpSms.Request.Source; //注意,最大的疑问在这里,request接收不到
                                           //HttpSms在之前的代码中这样创建的
                                            //  HttpSms:=TIdHTTP.Create(nil);
                                      //HttpSms.ProtocolVersion :=pv1_1;    if not Assigned(Stream) then
    begin
      Exit;
    end;
    DocIntf := tXML;
    tXML.LoadFromStream(Stream);
    tXML.Active := True;
    tNode := tXML.DocumentElement.ChildNodes.FindNode('deliver');
/*
  xxxxxxxx
*/
  finally
    DocIntf := nil;
    tNode := nil;
    FreeAndNil(Stream);
  end;
end;