2014-12-08 7 views
0

Android에서 C# (.net 3.5) aspx 서버로 HttpPost 요청을 보내려고합니다. (aspx에서 다중 요청 데이터를 가져 오는 방법은 무엇입니까?

protected void Page_Load(object sender, EventArgs e) 
{ 
    string[] keys = Request.Form.AllKeys; // only username and password keys received. 

    for (int i = 0; i < keys.Length; i++) 
    { 
     string [] tmp = Request.Form.GetValues (keys[i]); 
    } 
} 

내가 요청에 TextBody 부분의 키와 값을 얻을 수있는 사용자 이름을 : 아파치 다중 엔티티 빌더 안드로이드 측 엔티티 빌드 사용하고 있습니다 :

entityBuilder.addTextBody("username", username); 
entityBuilder.addTextBody("password", password); 
entityBuilder.addBinaryBody("file", file); 

을 그리고 C# 서버 측에서 데이터를 가져 오기 위해 시도 및 암호). 그러나 BinaryBody 키나 데이터가 수신되지 않았습니다. 왜 그런지 몰라?

+0

이 답변으로 솔루션을 게시하시기 바랍니다. –

+0

나는 stackoverflow에서 내 자신의 질문에 대답해야합니까? 내 평판은 내 자신의 질문에 대답 한 후 2 점을 잃었습니다 ... – TRX

답변

0

솔루션 :

HttpFileCollection MyFiles = Request.Files; 
// ... 
for (int l = 0; l < MyFiles.Count; l++) 
{ 
    if (MyFiles.GetKey(l) == "file") 
    { 
     HttpPostedFile file = MyFiles.Get("file"); 
     // ... 
    } 
} 
2

양식 변수를 확인합니다. 여기서 코드는 HTTP 요청의 본문 내에 보내는 BLOB을 만듭니다. 본문은 양식 변수가 아니며 단순히 헤더 다음에 오는 HTTP 요청의 내용입니다.

HttpRequest를은, 예를 들어 Cookies, Files, Form, Headers HTTP 요청의 내용을 이해하고 그 속성을 통해 다양한 부품을 제공합니다.

코드가 이진 데이터를 파일로 보내는 경우 Files 속성을 확인하십시오. 그렇지 않으면 속성을 사용하여 본문의 내용을 읽을 수 있습니다. 당신이 버퍼에 그 내용을 복사 할 수 있도록

var files=Request.Files; 
var aFile=files[0]; 

var length = aFile.ContentLength; 
byte[] input = new byte[length]; 

aFile.InputStream.Read(input,0,length); 

InputStream 그냥 스트림에 쓰는 : 데이터를 가정

이 파일에서 찾을 수 있습니다, HttpPostedFile.InputStream의 문서 파일을 읽는 방법을 설명합니다 디스크 등

+0

'var files Request.Files;'오타가 있습니까? 나는 그것을 'var files = Request.Files;'로 변경하고 코드에서 테스트했지만, 브라우저에서 페이지에 액세스하려고하면 'aFile.InputStream.Read (Argument Out Of Range Exception) , 0, length);'line. 내가 놓친 게 있니? 미리 감사드립니다. – TRX

+0

길이의 값은 무엇입니까? 얼마나 많은 파일이 있습니까? 그들의 이름과 길이는 무엇입니까? 어느 것을 읽으려고 했습니까? HTTP 요청 샘플을 게시 할 수 있습니까? 'files [0]'으로 첫 번째 파일을 얻을 수 있다는 사실은 요청에 * 적어도 하나의 파일이 있음을 의미합니다. –

+0

늦게 답장을 드려 죄송합니다. 마침내 나는 그것을 해결했다. 해결책은 간단합니다. 원래 질문을 솔루션으로 업데이트했습니다. 다시 한 번 감사드립니다! – TRX