пытаясь загрузить видео с помощью графика API - PullRequest
0 голосов
/ 30 апреля 2011

Я уже некоторое время пытаюсь реализовать функцию загрузки видео на Facebook для моего мобильного приложения, но так и не смог добиться успеха.Вчера я узнал, что альтернатива графа была доступна.

После нескольких ошибок, связанных с ключом доступа, я в основном дошел до того, что выходной поток успешно записывает файл фильма, а входной поток просто получает пустой jsonмассив, как только я написал файл 3gp.

Кто-нибудь знает, почему я получу пустой массив json, и при публикации всего моего кода не будет опубликовано видео, я получу код ответа 200, и сервер отправит мнеОтвет без ошибок?

Любая помощь, высоко оцененная.

Вот класс, который получает пустой массив json (метод send).Я добавил токен к URL-адресу и в таблице, чтобы быть уверенным.Извините, если код неопрятный, но это был день проб и ошибок.

import java.io.ByteArrayOutputStream;import java.io.InputStream;import java.io.OutputStream;импорт java.util.Enumeration;импорт java.util.Hashtable;import javax.microedition.io.Connector;import javax.microedition.io.HttpConnection;import net.rim.device.api.io.http.HttpProtocolConstants;

открытый класс HttpMultipartRequest2 {static final String BOUNDARY = "---------- V2ymHFg03ehbqgZCaKO6jy";byte [] postBytes = null;String url = null;Hashtable paramsTable;

public HttpMultipartRequest2(String url, Hashtable params,
        String fileField, String fileName, String fileType, byte[] fileBytes) throws Exception
{
    this.url = url;

    String boundary = getBoundaryString();
    paramsTable = params;
    String boundaryMessage = getBoundaryMessage(boundary, params, fileField, fileName, fileType);
    String endBoundary = "\r\n--" + boundary + "--\r\n";
    ByteArrayOutputStream bos = new ByteArrayOutputStream();
    bos.write(boundaryMessage.getBytes());
    bos.write(fileBytes);
    bos.write(endBoundary.getBytes());
    this.postBytes = bos.toByteArray();
    bos.close();
}
String getBoundaryString()  {
    return BOUNDARY;
}

String getBoundaryMessage(String boundary, Hashtable params, String fileField, String fileName, String fileType)
{
    StringBuffer res = new StringBuffer("--").append(boundary).append("\r\n");
    Enumeration keys = params.keys();
    while(keys.hasMoreElements())
    {
        String key = (String)keys.nextElement();
        String value = (String)params.get(key);
        res.append("Content-Disposition: form-data; name=\"").append(key).append("\"\r\n")
                .append("\r\n").append(value).append("\r\n")
                .append("--").append(boundary).append("\r\n");
    }
    res.append("Content-Disposition: form-data; name=\"").append(fileField)
            .append("\"; filename=\"").append(fileName).append("\"\r\n")
            .append("Content-Type: ").append(fileType).append("\r\n\r\n");
    Log.info(("res "+res.toString()));
    return res.toString();
}

public String send() throws Exception
{
    StringBuffer sb = new StringBuffer();
    HttpConnection hc = null;
    InputStream is = null;
    ByteArrayOutputStream bos = new ByteArrayOutputStream();
    byte[] res = null;
    try
    {
        Log.info("before hc open"+ url);
        hc = (HttpConnection) Connector.open(url);
        hc.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + getBoundaryString());
        hc.setRequestProperty("access_token", (String)paramsTable.get("access_token"));
        hc.setRequestProperty(HttpProtocolConstants.HEADER_CONTENT_LENGTH, String.valueOf(postBytes.length));
        hc.setRequestProperty( "x-rim-transcode-content", "none" );
        ByteArrayOutputStream out = new ByteArrayOutputStream();
        OutputStream dos = hc.openOutputStream();
         is = hc.openInputStream();
           Log.info("before  dos write responsecode");// + hc.getResponseCode());
        out.write(postBytes, 0, postBytes.length);
         //Log.info("flushing"+ hc.getResponseCode());
        Log.info("after  doswrite responsecode");

              dos.write(out.toByteArray());

              dos.flush();
                     Log.info("after flush");
                    if(dos!=null)
                            dos.close();
        int ch;
         Log.info("before openinput ");

           Log.info("after openinput ");
        while ((ch = is.read()) != -1)
        {
            bos.write(ch);
            sb.append((char)ch);
               Log.info("char"+(char)ch);
        }
        res = bos.toByteArray();
          Log.info("Response recieved from Server is : " + sb.toString() );

    }
    catch(Exception e)
    {
        Log.info(hc.getResponseCode() + "sexce"+e);
    }
    catch(OutOfMemoryError error)
            {
                    Log.info("outofmemory " + error);
                  System.gc();
            }
    finally
    {
        try
        {
            if(bos != null)
                bos.close();
            if(is != null)
                is.close();
            if(hc != null)
                hc.close();
        }
        catch(Exception e2)
        {
           Log.info("finally exception"+ e2);
        }
    }
    return sb.toString();
}

}

1 Ответ

0 голосов
/ 30 апреля 2011

Вы пытаетесь загрузить на фид пользователя или на страницу? Открытая ошибка в отношении публикации на страницах.

Кроме того, не могли бы вы опубликовать некоторый код?

Если вы прочитали документацию:

Facebook Graph API-> Видео

И что вы используете graph-video.facebook.com, а не graph.facebook.com.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...