Re: Веб-сервис и msxml
От: kat  
Дата: 01.07.03 08:40
Оценка: 12 (1)
S>Как это можно побороть?
закодировать строку url-encoding'ом



реализация на с++ :

  string urlencode_string(string source) {
      char* hexdigits="0123456789ABCDEF";
      const char* csource=source.c_str();
      string dest;
      for(int i=0;i<source.size();i++)
         if(csource[i]>='0' && csource[i]<='9' ||
            (csource[i]>='a' && csource[i]<='z') ||
            (csource[i]>='A' && csource[i]<='Z'))
            dest+=csource[i];
         else if(csource[i]==' ')
            dest+='+';
         else {
            char d1,d2;
            d1=csource[i]>>4;
            d2=csource[i]-(d1<<4);
            dest+='%';
            dest+=hexdigits[d1];
            dest+=hexdigits[d2];
         }
      return dest;
   }
Веб-сервис и msxml
От: Stewe  
Дата: 24.06.03 10:58
Оценка: +1
Привет всем!
Столкнулся с такой проблемой:
Есть веб-метод, к примеру:
[WebMethod]
public void GetString(string myString)
{
     
}


И когда он вызывается не Net'овским клиентом, а с помощью msxml, то при передаче строки символы "+" меняются на пробелы.
Вот примерный код клиентского вызова:

msxml::IXMLDOMDocument2Ptr m_pXmlDoc;
msxml::IXMLHTTPRequestPtr m_pXmlReq;
m_pXmlDoc.CreateInstance ("MSXML2.DOMDocument");
m_pXmlReq.CreateInstance ("MSXML2.XMLHTTP");

bstr_t m_strWebServiceURL="http://localhost/Service1.asmx";
bstr_t strMethod="UploadGDB";
bstr_t strParam="myString=1++++1";
bstr_t strResponse="";
    
bstr_t strURL = m_strWebServiceURL + "/" + strMethod;
HRESULT hr=m_pXmlReq->open("post", strURL, FALSE);
hr=m_pXmlReq->setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
hr=m_pXmlReq->send((_variant_t)strParam);


Как это можно побороть?

30.06.03 00:18: Перенесено модератором из '.NET' в XML/SOAP. — ХД
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.