2016-11-24 1 views
0

Я пытаюсь разобрать страницу с этим кодом:HTTP NewRequest получить неожиданные персонажи

client := &http.Client{} 
profile := getEpiURL(login) 

log.Print("Fetch " + profile) 
req, err := http.NewRequest("GET", profile, nil) 
if err != nil { 
    log.Fatal(err) 
} 
req.AddCookie(cookieSessionIntra) 
body, _ := httputil.DumpRequestOut(req, true) 

С этим как функция getEpiURL:

func getEpiURL(login string) (url string) { 
    url = "https://********/user/" + login + "/?format=json" 
    return 
} 

И когда я смотрю на выходе переменной profile хорошо , но в запросе кажется явно неправильным ...

2016/11/24 12:53:53 Fetch https: // ********/user/le **** in -vi ** е @ ? Е *******/= формат JSON

Затем отладки для запроса выводит меня:

GET/пользователь /% 00l% ***** 0о% * 00.%00c***0-%00v%00i%0*a%00r%00d%[email protected]%00e%0 0i% 00t% 00e% 00c% 0 *** 0.% 0 *** 00/? = формат JSON HTTP/1.1 Host: ****** User-Agent: Go-HTTP-клиент/1,1 Cookie: PHPSESSID = ********* Accept-Encoding: GZIP

+0

Обратите внимание, что текст, который вы пытались замаскировать, легко просматривается в процентном кодированном виде. – cnicutar

+0

Правда. Не важно, но в следующий раз я буду уделять больше внимания:/ –

ответ

1

Я думаю, что ваша оригинальная строка каким-то образом содержит символы NUL , Попробуйте это в the playground:

func main() { 
    req, err := http.NewRequest("GET", "https://some/normal/path", nil) 
    if err != nil { 
     log.Fatal(err) 
    } 
    body, _ := httputil.DumpRequestOut(req, true) 
    fmt.Printf("Hello, playground, %q", body) 
} 

Вы получите:

"GET /normal/path HTTP/1.1\r\nHost: some... 

try it with a string in which you inserted NUL characters Сейчас:

req, err := http.NewRequest("GET", "https://some/\000n\000o\000rmal/path", nil) 

...

"GET /%00n%00o%00rmal/path HTTP/1.1\r\nHost: some... 

Не совсем уверен, как ваш строка, содержащая t шланг. Узнайте больше о percent encoding.

+0

Часть, которая кодируется процентом, является адресом электронной почты, но мне нужно, чтобы она не была закодирована ... Проблема в том, что я ее не закодировал:/ –

+0

@ BorisLeMéec Можете ли вы показать, как вы создаете «логин»? Если вы уделяете пристальное внимание выходу, который вы опубликовали только, эта часть проблематична. – cnicutar

+0

логин пришел из: 'csv.NewReader (файл) .ReadAll()' он дает мне кусочек фрагмента строки. Поэтому 'ret [id] [indexEmail]' является моим «login», а 'indexEmail' определяется как 28. –

 Смежные вопросы

  • Нет связанных вопросов^_^