情况是这样的,现在在开发一个短信提示的项目。短信服务平台由第三方提供,当用户回复短信到该平台的时候,该平台会发送一段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;
对方提供的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;
如果用delphi,可以用IIS,然后写ISAPI扩展,接受对方的调用
问一下,是用intraweb来做吗?
直接使用应用的创建向导也可以