Owned by POST (Sad Day!)

Problems with WiFi, SQLite ,Bluetooth, WiMax, Proxies, etc...

Owned by POST (Sad Day!)

Postby cwebb02 » Thu May 14, 2009 4:31 am

Hey All,

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?

Syntax: [ Download ] [ Hide ]
Using java Syntax Highlighting
  1.  
  2. package com.android.flickr;
  3.  
  4.  
  5.  
  6. import java.io.BufferedReader;
  7.  
  8. import java.io.DataOutputStream;
  9.  
  10. import java.io.InputStreamReader;
  11.  
  12. import java.io.OutputStreamWriter;
  13.  
  14. import java.net.HttpURLConnection;
  15.  
  16. import java.net.URL;
  17.  
  18. import java.net.URLConnection;
  19.  
  20. import java.net.URLEncoder;
  21.  
  22. import java.security.MessageDigest;
  23.  
  24. import java.util.ArrayList;
  25.  
  26. import java.util.List;
  27.  
  28.  
  29.  
  30. import android.net.http.*;
  31.  
  32.  
  33.  
  34. import javax.xml.parsers.SAXParser;
  35.  
  36. import javax.xml.parsers.SAXParserFactory;
  37.  
  38.  
  39.  
  40. import org.apache.http.HttpResponse;
  41.  
  42. import org.apache.http.NameValuePair;
  43.  
  44. import org.apache.http.client.HttpClient;
  45.  
  46. import org.apache.http.client.entity.UrlEncodedFormEntity;
  47.  
  48. import org.apache.http.client.methods.HttpPost;
  49.  
  50. import org.apache.http.impl.client.DefaultHttpClient;
  51.  
  52. import org.apache.http.message.BasicNameValuePair;
  53.  
  54. import org.xml.sax.InputSource;
  55.  
  56. import org.xml.sax.XMLReader;
  57.  
  58.  
  59.  
  60. public class flickrTalkr {
  61.  
  62.         String photo, title, description, secret,auth_token;
  63.  
  64.         String api_key;
  65.  
  66.         String api_sig;
  67.  
  68.         public flickrTalkr(String apitok)
  69.  
  70.         {
  71.  
  72.                 photo = "/sdcard/blme.jpg";
  73.  
  74.                 title = "titleAmyandI";
  75.  
  76.                 description = "Black and White";
  77.  
  78.                 api_key = "d35a91cf46cbfc48c5dec2507c0c2821";
  79.  
  80.                 secret = "d0d11ca8e6bb28b5";
  81.  
  82.                 auth_token=apitok;
  83.  
  84.                 System.out.println("API Token---> "+apitok);
  85.  
  86.         }
  87.  
  88.        
  89.  
  90.         public void uploadPhoto(String p, String t, String d)
  91.  
  92.         {
  93.  
  94.                 try {
  95.  
  96.                         String s = secret+"api_key"+api_key+"auth_token"+auth_token;//+description+title;
  97.  
  98.                         System.out.println("String Data: "+ s);
  99.  
  100.                         MessageDigest md= MessageDigest.getInstance("MD5");
  101.  
  102.                         md.update(s.getBytes(),0,s.length());
  103.  
  104. //                      md.h
  105.  
  106.                         byte[] byteSig = md.digest();
  107.  
  108.                        
  109.  
  110.                         StringBuffer hexString = new StringBuffer();
  111.  
  112.                         for (int i=0;i<byteSig.length;i++) {
  113.  
  114.                                 String hex = Integer.toHexString(0xFF & byteSig[i]);
  115.  
  116.                                 if (hex.length() == 1) {
  117.  
  118.                                     // could use a for loop, but we're only dealing with a single byte
  119.  
  120.                                     hexString.append('0');
  121.  
  122.                                 }
  123.  
  124.                                 hexString.append(hex);
  125.  
  126.  
  127.  
  128.                         }
  129.  
  130.                         System.out.println("API Signature: "+hexString);
  131.  
  132.                         api_sig = hexString.toString();
  133.  
  134.  
  135.  
  136.  
  137.  
  138.                         List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(4);
  139.  
  140.  
  141.  
  142.                 String urlString = "http://api.flickr.com/services/upload/";
  143.  
  144.  
  145.  
  146.                 String POST = "---------------------------7d44e178b0434\r\n";
  147.  
  148.                 POST += "Content-Disposition: form-data; name=\"api_key\"\r\n";
  149.  
  150.                 POST += api_key+"\r\n";
  151.  
  152.                 POST += "---------------------------7d44e178b0434\r\n";
  153.  
  154.                 POST += "Content-Disposition: form-data; name=\"auth_token\"\r\n";
  155.  
  156.                 POST += auth_token+"\r\n";
  157.  
  158.                 POST += "---------------------------7d44e178b0434\r\n";
  159.  
  160.                 POST += "Content-Disposition: form-data; name=\"api_sig\"\r\n";
  161.  
  162.                 POST += api_sig+"\r\n";
  163.  
  164.                 POST += "---------------------------7d44e178b0434\n";
  165.  
  166.                 POST += "Content-Disposition: form-data; name=\"photo\";"; //No \r\n needed here
  167.  
  168.                 POST += "filename=\""+photo+"\"\r\n";
  169.  
  170.                 POST += "Content-Type: image/jpeg\r\n";
  171.  
  172.                 POST += "{RAW JFIF DATA}\r\n";
  173.  
  174.                 POST += "---------------------------7d44e178b0434--\r\n";
  175.  
  176.                 System.out.println(POST);
  177.  
  178.                 URL url = new URL(urlString);
  179.  
  180.                 HttpURLConnection conn = null;
  181.  
  182.                 conn = (HttpURLConnection) url.openConnection();
  183.  
  184.                 conn.setDoInput(true);
  185.  
  186.                 conn.setDoOutput(true);
  187.  
  188.                 conn.setUseCaches(false);
  189.  
  190.                 conn.setRequestMethod("POST");
  191.  
  192.                
  193.  
  194.                 conn.setRequestProperty("Content-Type", "multipart/form-data; boundary=---------------------------7d44e178b0434");
  195.  
  196.                 DataOutputStream dos = new DataOutputStream(conn.getOutputStream());
  197.  
  198.                 dos.writeBytes(POST);
  199.  
  200.                 nameValuePairs.add(new BasicNameValuePair("", POST));
  201.  
  202.  
  203.  
  204.                
  205.  
  206.             BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
  207.  
  208.                 String line;
  209.  
  210.                 while ((line = rd.readLine()) != null) {
  211.  
  212.                     // Process line...
  213.  
  214.                         System.out.println("Response from Flickr: "+line);
  215.  
  216.                 }
  217.  
  218.                 dos.close();
  219.  
  220.                 rd.close();
  221.  
  222.                 }
  223.  
  224.                
  225.  
  226.                 catch (Exception e) {
  227.  
  228.                         System.out.println("ERROR: Something is effed");
  229.  
  230.                 }
  231.  
  232.         }
  233.  
  234. }
  235.  
  236.  
Parsed in 0.049 seconds, using GeSHi 1.0.8.4
cwebb02
Freshman
Freshman
 
Posts: 2
Joined: Thu May 14, 2009 4:25 am

Top

Return to Networking & Database Problems

Who is online

Users browsing this forum: Google [Bot] and 3 guests