So I'm working on using the Flickr API and uploading a file. Problem is, somehow I'm not formatting the POST output correctly. Always am getting "POST is too Large" and after some troubleshooting I think the content-length is off.
Needs to look similar to this: Upload Example
Any ideas?
Using java Syntax Highlighting
- package com.android.flickr;
- import java.io.BufferedReader;
- import java.io.DataOutputStream;
- import java.io.InputStreamReader;
- import java.io.OutputStreamWriter;
- import java.net.HttpURLConnection;
- import java.net.URL;
- import java.net.URLConnection;
- import java.net.URLEncoder;
- import java.security.MessageDigest;
- import java.util.ArrayList;
- import java.util.List;
- import android.net.http.*;
- import javax.xml.parsers.SAXParser;
- import javax.xml.parsers.SAXParserFactory;
- import org.apache.http.HttpResponse;
- import org.apache.http.NameValuePair;
- import org.apache.http.client.HttpClient;
- import org.apache.http.client.entity.UrlEncodedFormEntity;
- import org.apache.http.client.methods.HttpPost;
- import org.apache.http.impl.client.DefaultHttpClient;
- import org.apache.http.message.BasicNameValuePair;
- import org.xml.sax.InputSource;
- import org.xml.sax.XMLReader;
- public class flickrTalkr {
- String photo, title, description, secret,auth_token;
- String api_key;
- String api_sig;
- public flickrTalkr(String apitok)
- {
- photo = "/sdcard/blme.jpg";
- title = "titleAmyandI";
- description = "Black and White";
- api_key = "d35a91cf46cbfc48c5dec2507c0c2821";
- secret = "d0d11ca8e6bb28b5";
- auth_token=apitok;
- System.out.println("API Token---> "+apitok);
- }
- public void uploadPhoto(String p, String t, String d)
- {
- try {
- String s = secret+"api_key"+api_key+"auth_token"+auth_token;//+description+title;
- System.out.println("String Data: "+ s);
- MessageDigest md= MessageDigest.getInstance("MD5");
- md.update(s.getBytes(),0,s.length());
- // md.h
- byte[] byteSig = md.digest();
- StringBuffer hexString = new StringBuffer();
- for (int i=0;i<byteSig.length;i++) {
- String hex = Integer.toHexString(0xFF & byteSig[i]);
- if (hex.length() == 1) {
- // could use a for loop, but we're only dealing with a single byte
- hexString.append('0');
- }
- hexString.append(hex);
- }
- System.out.println("API Signature: "+hexString);
- api_sig = hexString.toString();
- List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(4);
- String urlString = "http://api.flickr.com/services/upload/";
- String POST = "---------------------------7d44e178b0434\r\n";
- POST += "Content-Disposition: form-data; name=\"api_key\"\r\n";
- POST += api_key+"\r\n";
- POST += "---------------------------7d44e178b0434\r\n";
- POST += "Content-Disposition: form-data; name=\"auth_token\"\r\n";
- POST += auth_token+"\r\n";
- POST += "---------------------------7d44e178b0434\r\n";
- POST += "Content-Disposition: form-data; name=\"api_sig\"\r\n";
- POST += api_sig+"\r\n";
- POST += "---------------------------7d44e178b0434\n";
- POST += "Content-Disposition: form-data; name=\"photo\";"; //No \r\n needed here
- POST += "filename=\""+photo+"\"\r\n";
- POST += "Content-Type: image/jpeg\r\n";
- POST += "{RAW JFIF DATA}\r\n";
- POST += "---------------------------7d44e178b0434--\r\n";
- System.out.println(POST);
- URL url = new URL(urlString);
- HttpURLConnection conn = null;
- conn = (HttpURLConnection) url.openConnection();
- conn.setDoInput(true);
- conn.setDoOutput(true);
- conn.setUseCaches(false);
- conn.setRequestMethod("POST");
- conn.setRequestProperty("Content-Type", "multipart/form-data; boundary=---------------------------7d44e178b0434");
- DataOutputStream dos = new DataOutputStream(conn.getOutputStream());
- dos.writeBytes(POST);
- nameValuePairs.add(new BasicNameValuePair("", POST));
- BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
- String line;
- while ((line = rd.readLine()) != null) {
- // Process line...
- System.out.println("Response from Flickr: "+line);
- }
- dos.close();
- rd.close();
- }
- catch (Exception e) {
- System.out.println("ERROR: Something is effed");
- }
- }
- }
Parsed in 0.048 seconds, using GeSHi 1.0.8.4

