it can't work. i think it was caused by our special prtocol of production
what is we want
case 1
if the raw path is ""/namedobject/1111/C:\\tmp\\tritonqa\\test_4662_fullPercentage_and_verify_it_works\\20140516064843\\test_file_1400222925_33363.dat""
then send query should like this
GET /namedobject/1111/C:%5Ctmp%5Ctritonqa%5Ctest_4662_fullPercentage_and_verify_it_works%5C20140516064843%5Ctest_file_1400222925_33363.dat?exactVersion=0&versionId=1397227272 HTTP/1.1
if i use following code in go lang, it can work.
<pre>
func fun1() {
client := &http.Client{}
myurl := "
http://192.168.228.10/namedObjects/164861/%2Ftmp%2Ftritonqa%2Ftest_121748_part_files_dirs%2F20140718223538%2Ftest_file_1405694201_33172.dat?versionId=1405694277&exactVersion=0"
fmt.Println("url = ", myurl)
reqest, err := http.NewRequest("GET", myurl, nil)
if err != nil {
fmt.Println("err != nil")
fmt.Println(err)
}
u, err := url.Parse("
http://192.168.228.10")
if err != nil {
log.Fatal(err)
}
u.Scheme = "http"
u.Host = "192.168.228.10"
u.Path = "/namedobject/1111/C:\\tmp\\tritonqa\\test_4662_fullPercentage_and_verify_it_works\\20140516064843\\test_file_1400222925_33363.dat"
fmt.Println("PATH = ", u.Path)
q := u.Query()
q.Set("versionId", "1397227272")
q.Set("exactVersion", "0")
u.RawQuery = q.Encode()
reqest.URL = u
fmt.Println("reqest %v", reqest.URL)
response, err := client.Do(reqest)
fmt.Println("done")
fmt.Println("response %v", response," ", err)
}
</pre>
case 2. if the rawpath look like this
"u.Path = "/namedobject/1111//tmp/tritonqa/test_121748_part_files_dirs/20140718223538/test_file_1405694201_33172.dat"
we wish the query like this
"/namedObjects/164861/%2Ftmp%2Ftritonqa%2Ftest_121748_part_files_dirs%2F20140718223538%2Ftest_file_1405694201_33172.dat"
we need escape "/" and other unicode . if i use the code like before, in server side, we will got some query like this
"GET /namedobject/1111//tmp/tritonqa/test_121748_part_files_dirs/20140718223538/test_file_1405694201_33172.dat?exactVersion=0&versionId=1397227272 HTTP/1.1
"
it seem "net/http" don't work as i wish
as you told. I have test your code.
the code looks like this
<pre>
func fun1() {
client := &http.Client{}
myurl := "
http://192.168.228.10/namedObjects/164861/%2Ftmp%2Ftritonqa%2Ftest_121748_part_files_dirs%2F20140718223538%2Ftest_file_1405694201_33172.dat?versionId=1405694277&exactVersion=0"
fmt.Println("url = ", myurl)
reqest, err := http.NewRequest("GET", myurl, nil)
if err != nil {
fmt.Println("err != nil")
fmt.Println(err)
}
u, err := url.Parse("
http://192.168.228.10")
if err != nil {
log.Fatal(err)
}
u.Scheme = "http"
u.Host = "192.168.228.10"
u.Path = "/namedobject/1111/" + url.QueryEscape("/tmp/tritonqa/test_121748_part_files_dirs/20140718223538/test_file_1405694201_33172.dat")
fmt.Println("PATH = ", u.Path)
q := u.Query()
q.Set("versionId", "1397227272")
q.Set("exactVersion", "0")
u.RawQuery = q.Encode()
reqest.URL = u
fmt.Println("reqest %v", reqest.URL)
response, err := client.Do(reqest)
fmt.Println("done")
fmt.Println("response %v", response, " ", err)
</pre>
the send query looks like this
GET /namedobject/1111/%252Ftmp%252Ftritonqa%252Ftest_121748_part_files_dirs%252F20140718223538%252Ftest_file_1405694201_33172.dat
what's i want is %2F , but is is " %252F" , it can't work.