Pregunta

¿Hay una manera de utilizar WebDAV con J2ME (algunas bibliotecas o codificación manual)?

He intentado:
- javax.microedition.io.HttpConnection , pero la "búsqueda" método no soportado no
- javax.microedition.io.SocketConnection solicitud HTTP - nada vuelve en respuesta
Tal vez algo malo en mi código o cabecera HTTP:

    String response = "";
    String query = "<?xml version='1.0'?> " 
            + "<g:searchrequest xmlns:g='DAV:'> "
            + "<g:sql> "
            + "SELECT 'DAV:displayname' "
            + "FROM 'http://exchangeserver.com/Public/' "
            + "</g:sql> "
            + "</g:searchrequest> ";
    String len = String.valueOf(query.length());
    SocketConnection hc = (SocketConnection) Connector
            .open("socket://exchangeserver.com:8080");
    DataOutputStream dout = 
            new DataOutputStream(hc.openOutputStream());
    DataInputStream din = new DataInputStream(hc.openInputStream());
    String userPass = "username" + ":" + "password";
    byte[] encoded = 
            Base64OutputStream.encode(userPass.getBytes(), 0,
            userPass.length(), false, false);
    ByteArrayOutputStream bos = new ByteArrayOutputStream();
    String request = "SEARCH /Public/ HTTP/1.1\r\n"
            +"Content-Type:text/xml\r\nContent-Length:"
            + len
            + "\r\nAuthorization:Basic "
            + new String(encoded)
            + "\r\n\r\n";
    bos.write(request.getBytes());
    bos.write(query.getBytes());
    dout.write(bos.toByteArray());
    dout.flush();
    dout.close();
    byte[] bs = new byte[900];
    din.readFully(bs);
    bos = new ByteArrayOutputStream();
    bos.write(bs);
    din.close();
    hc.close();
    response = bos.toString();
¿Fue útil?

Solución 2

Julian 1 que era correcto para la propiedad Host, QRSO 1, gracias a todos! Así, España - He encontrado servicio WebDAV libre MyDisk.se (SEARCH no permitió, por lo solía PROPFIND)
- se utiliza WFetch a jugar con solicitud WebDAV
- se utiliza Monitor de red para comparar las peticiones de WFetch y mi aplicación.
:) Por último está funcionando! Código de resultado:

String response = "";
String query = "<?xml version='1.0' encoding='UTF-8'?>\r\n"
        + "<d:propfind xmlns:d='DAV:'>\r\n"
        + "<d:prop><d:getcontenttype/></d:prop>\r\n"
        + "<d:prop><d:getcontentlength/></d:prop>\r\n"
        + "</d:propfind>\r\n";

String len = String.valueOf(query.length());
SocketConnection hc = (SocketConnection) Connector
        .open("socket://79.99.7.153:80");
DataOutputStream dout = new DataOutputStream(hc.openOutputStream());
DataInputStream din = new DataInputStream(hc.openInputStream());
String userPass = "login" + ":" + "password";
byte[] encoded = Base64OutputStream.encode(userPass.getBytes(), 0,
        userPass.length(), false, false);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
String request = "PROPFIND /mgontar/ HTTP/1.1\r\n" 
        + "Depth: 1\r\n"
        + "Host: mydisk.se:80\r\n" 
        + "Accept: */*\r\n"
        + "Content-Type: text/xml\r\n" 
        + "Content-Length: " + len
        + "\r\nAuthorization: Basic " + new String(encoded)
        + "\r\n\r\n";
bos.write(request.getBytes());
bos.write(query.getBytes());
dout.write(bos.toByteArray());
dout.flush();
dout.close();
byte[] bs = new byte[900];
din.readFully(bs);
bos = new ByteArrayOutputStream();
bos.write(bs);
din.close();
hc.close();
response = bos.toString();

Otros consejos

¿Qué quiere decir con "nada" retornos? Sin cuerpo de la respuesta? No hay código de estado?

recomiendo para rastrear lo que está pasando en el "alambre" ...

ACTUALIZACIÓN:? ¿Ha intentado añadir un encabezado de host

Para su información Si está probando en un teléfono móvil real, entonces hay una oportunidad justa su operador de red móvil podría estar bloqueando tráfico no HTTP.

Es posible que desee comprobar primero que se puede hacer GET y POST peticiones al servidor en primer lugar.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top