代码如下:    sl.Text := '<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"'+
              ' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd='+
              '"http://www.w3.org/2001/XMLSchema" xmlns:soapenc="'+
              'http://schemas.xmlsoap.org/soap/encoding/"><soap:Body soap:encodingStyle='+
              '"http://schemas.xmlsoap.org/soap/encoding/"><snp:getShopCategoryList '+
              'xmlns:snp="tbassistant4"><userInfo><locale></locale><name>greathjw'+
              '</name><version>2.0B1</version></userInfo></snp:getShopCategoryList>'+
              '</soap:Body></soap:Envelope>';
  m.Text := idhttp.Post(url, sl);  
-------------这样提交数据之后,我抓包工具抓到它提交的数据却是这样的:<soap:Envelope xmlns:soap=%22http%3A%2F%2Fschemas%2Exmlsoap%2Eorg%2Fsoap%2Fenvelope%2F%22+xmlns%3Axsi%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2001%2FXMLSchema%2Dinstance%22+xmlns%3Axsd%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2001%2FXMLSchema%22+xmlns%3Asoapenc%3D%22http%3A%2F%2Fschemas%2Exmlsoap%2Eorg%2Fsoap%2Fencoding%2F%22%3E%3Csoap%3ABody+soap%3AencodingStyle%3D%22http%3A%2F%2Fschemas%2Exmlsoap%2Eorg%2Fsoap%2Fencoding%2F%22%3E%3Csnp%3AgetShopCategoryList+xmlns%3Asnp%3D%22tbassistant4%22%3E%3CuserInfo%3E%3Clocale%3E%3C%2Flocale%3E%3Cname%3Egreathjw%3C%2Fname%3E%3Cversion%3E2%2E0B1%3C%2Fversion%3E%3C%2FuserInfo%3E%3C%2Fsnp%3AgetShopCategoryList%3E%3C%2Fsoap%3ABody%3E%3C%2Fsoap%3AEnvelope%3E
-------------------------
请问如何解决符号的问题?? 它从冒号开始就变了。。 把冒号,双引号,括号这些全换成了HTML编码的了。。 怎么处理? 多谢。

解决方案 »

  1.   

    这个没关系吧.... post的时候可以用"%+ascII码"的形式替代字符我们公司访问网页有关键字屏蔽,比如屏蔽"flash",我们一般访问的时候把"flash" 改成 "fl%61sh"就可以了
      

  2.   

    如果按你说的,把 " 号抱成 %34  的话。。那么提交上去的将会是: %2534  。。 它把百分号也转换了,34还留着。 晕哦忘说了,内容设置是这样的:idhttp.Request.ContentType := 'text/xml; charset=utf-8';
      

  3.   

    %后面是16进制所以 " 被替换成 %22 这个从你给的数据里看是这样的啊...
    比如 "http...   就变成了 %22http....
      

  4.   

    是啊。。可是我从别人软件里抓包是直接发送的字符的。。而我的发送却变成了带一堆 % 号的了。我从别人软件抓包出来的是这样,别人发送时就是符。没有一个带 % 号的。:<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"><soap:Body soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><snp:getShopCategoryList xmlns:snp="tbassistant4"><userInfo><locale></locale><name>greathjw</name><version>2.0B1</version></userInfo></snp:getShopCategoryList></soap:Body></soap:Envelope>
    而我把上面的字符放在IDHTTP里发送时。。 就出现顶部我说的那情况了。
      

  5.   

    是等号在作怪。。IDHHTTP会自动把=号后面的文本作URL编码。。 晕。怎么能取消这个
      

  6.   

    晕。。把IDHTTP的HTTPOptions去掉[hoForceEncodeParams]就得了。。汗。。郁闷死我了。