私は、Webサービスからいくつかのファイルをダウンロードする必要のあるAndroidアプリケーションを開発中です。Android httppostの結果としてpdfファイルを入手
ゴール
私は、WebサービスからPDFファイルをダウンロードし、携帯電話にそれを表示します。私は初心者Webサービスと連携し、I'dontだ
問題
は、ファイルを取得し、それを開くためにどのように明確に持っています。
ここでは、これまでの私のコードです:
public void downloadFile(String username, String password, String filename) {
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
nameValuePairs.add(new BasicNameValuePair("username", username));
nameValuePairs.add(new BasicNameValuePair("password", password));
nameValuePairs.add(new BasicNameValuePair("filename", filename));
String output = httpPost(URL_DESCARGAS, nameValuePairs);
}
private String httpPost(String url, List<NameValuePair> nameValuePairs) {
/* Create new HttpClient and Post Header */
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(url);
try {
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs, HTTP.UTF_8));
// Execute HTTP Post Request
HttpResponse response = httpclient.execute(httppost);
/* Get output */
return inputStreamToString(response.getEntity().getContent()).toString();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return "";
}
私は応答の文字列を返す必要はありませんが、私は私がしなければならないのか分かりません。どのようにWebサービスを返すpdfを表示するのですか?
私は同じ実行する必要がある別のアクティビティでは、Webサービスは.pngを返し、イメージビューやそのようなもので表示したいと思います。それは同じ方法で行われますか?
ありがとうございました。私は長い間検索しましたが、何も見つかりませんでした。 (私はSDカードのルートにそれを見ることはありません)http://www.androidsnippets.com/download-an-http-file-to-sdcard-with-progress-notification と私はそれが言うことを使用しますが、ファイルが作成されません。
編集
私はそのURLを見つけました。ここで
は私の変更されたコードです:
public void downloadFile(String username, String password, String filename) {
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
nameValuePairs.add(new BasicNameValuePair("username", username));
nameValuePairs.add(new BasicNameValuePair("password", password));
nameValuePairs.add(new BasicNameValuePair("filename", filename));
HttpResponse response = httpPost(URL_DESCARGAS, nameValuePairs);
HttpEntity entity = response.getEntity();
if (entity != null) {
try {
InputStream inputStream = entity.getContent();
//set the path where we want to save the file
//in this case, going to save it on the root directory of the
//sd card.
File SDCardRoot = Environment.getExternalStorageDirectory();
//create a new file, specifying the path, and the filename
//which we want to save the file as.
File file = new File(SDCardRoot, filename);
//this will be used to write the downloaded data into the file we created
FileOutputStream fileOutput = new FileOutputStream(file);
//create a buffer...
byte[] buffer = new byte[1024];
int bufferLength = 0; //used to store a temporary size of the buffer
//now, read through the input buffer and write the contents to the file
while ((bufferLength = inputStream.read(buffer)) > 0) {
//add the data in the buffer to the file in the file output stream (the file on the sd card
fileOutput.write(buffer, 0, bufferLength);
}
//close the output stream when done
fileOutput.close();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
あなたは私を助けることができますか?私はそのファイルを作成し、現時点で電話に表示する必要があります。