2011-03-07 2 views
0

안녕하세요, 저는 대학에서의 마지막 해의 프로젝트를 위해 앱을 만들고 있는데, 고심하고있는 것은 기본 http 클라이언트를 사용하여 아래 게시물을 모방하려고합니다. 그것은 다른 사람들과 형식이 다른 것처럼 보였습니다. 나는이 유사하고 사용하고 코드는 사이트에 로그인에 성공했다 그러나브라우저 모방 HTTP POST 요청, 이상한 형식

HttpClient httpclient = new DefaultHttpClient(); 
HttpPost httppost = new HttpPost("http://www.myurl.com/app/page.php"); 
// Add your data 
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(5); 
nameValuePairs.add(new BasicNameValuePair("type", "20")); 
nameValuePairs.add(new BasicNameValuePair("mob", "919895865899")); 
nameValuePairs.add(new BasicNameValuePair("pack", "0")); 
nameValuePairs.add(new BasicNameValuePair("exchk", "1")); 

try { 
     httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 
     Log.d("myapp", "works till here. 2"); 
     try { 
      HttpResponse response = httpclient.execute(httppost); 
      Log.d("myapp", "response " + response.getEntity()); 
     } catch (ClientProtocolException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } catch (UnsupportedEncodingException e) { 
     e.printStackTrace(); 
    } 

, 나는 아래의 게시물에서 매개 변수와 그 값을 구분하기 위해 고군분투의 목적이 확실 해요 어떤 도움이 많이 주시면 감사하겠습니다 수 8743499427392. : 이것은 여러 부분 형식이라고

http://messaging.o2online.ie/con_save.osp 

POST /con_save.osp -----------------------------8743499427392 
Content-Disposition: form-data; name="EContactID" 

-1^ 
-----------------------------8743499427392 
Content-Disposition: form-data; name="EContactIDList" 


-----------------------------8743499427392 
Content-Disposition: form-data; name="Categories" 

Synch; 
-----------------------------8743499427392 
Content-Disposition: form-data; name="ENickName" 

Test Colm Test Shannon 
-----------------------------8743499427392 
Content-Disposition: form-data; name="EAtt1"; filename="" 
Content-Type: application/octet-stream 


-----------------------------8743499427392 
Content-Disposition: form-data; name="EPMobile" 

0868617541 
-----------------------------8743499427392 
Content-Disposition: form-data; name="EMobile" 


-----------------------------8743499427392-- 

답변

2

(HTTP 라이브 머리글에서 게시물의 일부), 각 양식 필드가 얻을 수 있음을 의미 다중 부분 요청의 자체 블록 이 형식은 일반적으로 파일 업로드에 사용됩니다.

----- ###### 라인은 각 양식 필드를 자체 섹션으로 분할하는 구분선입니다. 수신자가 본문을 구문 분석 할 수 있도록 정확한 문자가 HTTP 헤더에 나열됩니다.

Fiddler (www.fiddler2.com)와 같은 도구를 사용하여 실제 사이트에서 사용되는이 형식의 형식을 볼 수 있습니다.

은 참조 : Multipart forms from C# clientUpload files with HTTPWebrequest (multipart/form-data)

+0

이봐 당신이. "정확한 문자가 수신기가 몸을 구문 분석 할 수있는 HTTP 헤더에 나열되어 있습니다"라고 할 때, 당신은 무엇을 의미 했습니까? 이러한 게시물을 성공적으로 모방하려면이 값을 가져와야합니다. –

+0

서버가 요청을 올바르게 구문 분석하려면 브라우저에서와 동일한 방법으로 HTTP 헤더에 구분 기호 문자열을 포함시켜야합니다. – EricLaw

+0

확인. 내가 궁금해하는 점은이 문자열을 찾는 방법입니다. –