Bonjour, ce la fait plusieurs jours que je me bats avec la bibliothèque Apache pour créer un lien FTP avec mon serveur, Android me rend cela impossible...
J'ai des messages d'erreur que j'ai énormément de mal à comprendre donc je vais vous en faire part :
06-02 18:34:54.608: E/AndroidRuntime(9398): FATAL EXCEPTION: main
06-02 18:34:54.608: E/AndroidRuntime(9398): android.os.NetworkOnMainThreadException
06-02 18:34:54.608: E/AndroidRuntime(9398): at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1099)
06-02 18:34:54.608: E/AndroidRuntime(9398): at java.net.InetAddress.lookupHostByName(InetAddress.java:432)
06-02 18:34:54.608: E/AndroidRuntime(9398): at java.net.InetAddress.getAllByNameImpl(InetAddress.java:258)
06-02 18:34:54.608: E/AndroidRuntime(9398): at java.net.InetAddress.getByName(InetAddress.java:336)
06-02 18:34:54.608: E/AndroidRuntime(9398): at java.net.InetSocketAddress.<init>(InetSocketAddress.java:105)
06-02 18:34:54.608: E/AndroidRuntime(9398): at java.net.InetSocketAddress.<init>(InetSocketAddress.java:90)
06-02 18:34:54.608: E/AndroidRuntime(9398): at org.apache.commons.net.SocketClient.connect(SocketClient.java:176)
06-02 18:34:54.608: E/AndroidRuntime(9398): at com.example.okok.MainActivity.downloadFile(MainActivity.java:66)
06-02 18:34:54.608: E/AndroidRuntime(9398): at com.example.okok.MainActivity$1.onClick(MainActivity.java:37)
06-02 18:34:54.608: E/AndroidRuntime(9398): at android.view.View.performClick(View.java:3528)
06-02 18:34:54.608: E/AndroidRuntime(9398): at android.view.View$PerformClick.run(View.java:14235)
06-02 18:34:54.608: E/AndroidRuntime(9398): at android.os.Handler.handleCallback(Handler.java:605)
06-02 18:34:54.608: E/AndroidRuntime(9398): at android.os.Handler.dispatchMessage(Handler.java:92)
06-02 18:34:54.608: E/AndroidRuntime(9398): at android.os.Looper.loop(Looper.java:137)
06-02 18:34:54.608: E/AndroidRuntime(9398): at android.app.ActivityThread.main(ActivityThread.java:4424)
06-02 18:34:54.608: E/AndroidRuntime(9398): at java.lang.reflect.Method.invokeNative(Native Method)
06-02 18:34:54.608: E/AndroidRuntime(9398): at java.lang.reflect.Method.invoke(Method.java:511)
06-02 18:34:54.608: E/AndroidRuntime(9398): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:817)
06-02 18:34:54.608: E/AndroidRuntime(9398): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:584)
06-02 18:34:54.608: E/AndroidRuntime(9398): at dalvik.system.NativeStart.main(Native Method)
06-02 18:43:40.178: I/Adreno200-EGLSUB(9556): <ConfigWindowMatch:2081>: Format RGBA_8888.
06-02 18:43:40.178: D/memalloc(9556): /dev/pmem: Mapped buffer base:0x51875000 size:1843200 offset:1228800 fd:68
06-02 18:43:40.678: D/memalloc(9556): /dev/pmem: Mapped buffer base:0x51d37000 size:5939200 offset:5324800 fd:71
06-02 18:43:40.768: D/memalloc(9556): /dev/pmem: Mapped buffer base:0x522e1000 size:9666560 offset:9052160 fd:74
06-02 18:43:42.438: W/dalvikvm(9556): threadid=1: thread exiting with uncaught exception (group=0x40af29f0)
06-02 18:43:42.458: E/AndroidRuntime(9556): FATAL EXCEPTION: main
06-02 18:43:42.458: E/AndroidRuntime(9556): android.os.NetworkOnMainThreadException
06-02 18:43:42.458: E/AndroidRuntime(9556): at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1099)
06-02 18:43:42.458: E/AndroidRuntime(9556): at java.net.InetAddress.lookupHostByName(InetAddress.java:432)
06-02 18:43:42.458: E/AndroidRuntime(9556): at java.net.InetAddress.getAllByNameImpl(InetAddress.java:258)
06-02 18:43:42.458: E/AndroidRuntime(9556): at java.net.InetAddress.getByName(InetAddress.java:336)
06-02 18:43:42.458: E/AndroidRuntime(9556): at java.net.InetSocketAddress.<init>(InetSocketAddress.java:105)
06-02 18:43:42.458: E/AndroidRuntime(9556): at java.net.InetSocketAddress.<init>(InetSocketAddress.java:90)
06-02 18:43:42.458: E/AndroidRuntime(9556): at org.apache.commons.net.SocketClient.connect(SocketClient.java:176)
06-02 18:43:42.458: E/AndroidRuntime(9556): at com.example.okok.MainActivity.downloadFile(MainActivity.java:66)
06-02 18:43:42.458: E/AndroidRuntime(9556): at com.example.okok.MainActivity$1.onClick(MainActivity.java:37)
06-02 18:43:42.458: E/AndroidRuntime(9556): at android.view.View.performClick(View.java:3528)
06-02 18:43:42.458: E/AndroidRuntime(9556): at android.view.View$PerformClick.run(View.java:14235)
06-02 18:43:42.458: E/AndroidRuntime(9556): at android.os.Handler.handleCallback(Handler.java:605)
06-02 18:43:42.458: E/AndroidRuntime(9556): at android.os.Handler.dispatchMessage(Handler.java:92)
06-02 18:43:42.458: E/AndroidRuntime(9556): at android.os.Looper.loop(Looper.java:137)
06-02 18:43:42.458: E/AndroidRuntime(9556): at android.app.ActivityThread.main(ActivityThread.java:4424)
06-02 18:43:42.458: E/AndroidRuntime(9556): at java.lang.reflect.Method.invokeNative(Native Method)
06-02 18:43:42.458: E/AndroidRuntime(9556): at java.lang.reflect.Method.invoke(Method.java:511)
06-02 18:43:42.458: E/AndroidRuntime(9556): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:817)
06-02 18:43:42.458: E/AndroidRuntime(9556): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:584)
06-02 18:43:42.458: E/AndroidRuntime(9556): at dalvik.system.NativeStart.main(Native Method)
Et voici mon code MainActivity.java :
package com.example.okok;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.net.SocketException;
import android.os.Bundle;
import org.apache.commons.net.ftp.*;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity {
FTPClient mFTPClient = new FTPClient();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final TextView view = (TextView) findViewById(R.id.welcomeText);
OnClickListener enregistrerBouton = new OnClickListener()
{
@Override
public void onClick(View actualView) {
view.setText("Un autre texte");
Intent intent = new Intent(MainActivity.this, ProfileActivity.class);
startActivity(intent);
downloadFile("e", "e");
}
};
Button bouton = (Button) findViewById(R.id.loginButton);
bouton.setOnClickListener(enregistrerBouton);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
public void downloadFile(String fileToDownload, String nameOfFile) {
/////////////////////////////////////////////////////////////////////////////////////////////////////
// //
// Connexion au serveur //
// //
/////////////////////////////////////////////////////////////////////////////////////////////////////
mFTPClient = new FTPClient();
// connecting to the host
try {
mFTPClient.connect("ftpperso.free.fr", 21);
} catch (SocketException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
boolean status = mFTPClient.login("PSEUDO", "MOTDEPASSE");
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
// now check the reply code, if positive mean connection success
if (FTPReply.isPositiveCompletion(mFTPClient.getReplyCode())) {
/* Set File Transfer Mode
*
* To avoid corruption issue you must specified a correct
* transfer mode, such as ASCII_FILE_TYPE, BINARY_FILE_TYPE,
* EBCDIC_FILE_TYPE .etc. Here, I use BINARY_FILE_TYPE
* for transferring text, image, and compressed files.
*/
try {
mFTPClient.setFileType(FTP.ASCII_FILE_TYPE);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
mFTPClient.enterLocalPassiveMode();
}
}
}
Si vous pouviez m'aider, ce serait génial !
Développeur indépendant à la poursuite de connaissances.
Je me permets d'upper le sujet, car ça devient urgent.
Aidez moi s'il vous plaît !
Développeur indépendant à la poursuite de connaissances.
[Android] Impossible d'utiliser Apache ?
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.