2009-11-09 1 views
1
CAtlNavigateData navData; 
CStringA m_strForm = "name=+++&priv=1&password="; 
navData.SetSocketTimeout(m_nMilliSecond); 
navData.SetMethod(ATL_HTTP_METHOD_POST); 
navData.SetPostData((BYTE*)(LPSTR)(LPCSTR)m_strForm, m_strForm.GetLength(), QHTTP_FORM_URLENCODE); 

J'attrape le paquet affiché, et trouver des données post name = "", il devrait être name="+++". Est-ce que SetPostData(...) ne peut pas traiter de symbole spécial. Comment puis-je éviter ça?CAtlNavigateData ne peut pas traiter avec le symbole spécial tel que +

Merci pour la réponse de Snazzer. ATL fournit-il une API pour cela?

Répondre

0

Vous devez URL encoder votre chaîne, afin de remplacer le '+' avec '% 2B'

CStringA m_strForm = "name=%2B%2B%2B&priv=1&password="; 

Pour plus d'informations, consultez URL encoding

+0

est-il des API d'encodage d'URL? Est-ce que je dois l'écrire moi-même? Merci beaucoup! – user25749

+0

AtlEscapeUrl? (http://www.google.com/search?sourceid=chrome&ie=UTF-8&q=AtlEscapeUrl&esrch=FT1) – sdtom

Questions connexes