Note that there are some explanatory texts on larger screens.

plurals
  1. POAndroid - How do you pass a byte[] to a .net Webservice using HttpClient / HttpPost?
    primarykey
    data
    text
    <p>How can I call a Webservice with a byte[] parameter? Tried using the namedvaluepairs, but they take strings only. I am not using the Ksoap2, we decided to use the HttpClient / HttpPost method.</p> <p>Anyone have any ideas?</p> <p>Here is my code:</p> <pre><code>public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // WORKS WITH JPEG FILE -- String existingFileName = "/sdcard/dcim/Camera/1225231027592.jpg"; String existingFileName = "/sdcard/dcim/0217175.jpg"; String mMyFilename = "0217175.jpg"; // /sdcard/Music/kryptonite.mp3"; //DOES NOT WORK WITH MP3 FILE File uploadFile = new File(existingFileName); FileInputStream fileInputStream = null; try { fileInputStream = new FileInputStream(uploadFile); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } String lineEnd = "\r\n"; String twoHyphens = "--"; String boundary = "*****"; String mTest; String Method = null; try { //******************************************************************** // Create the HttpClient and the HttpPost // Note: Need to use HttpPost because of arguments/parameters //******************************************************************** HttpClient client = new DefaultHttpClient(); HttpPost request = new HttpPost(); fileInputStream = new FileInputStream(uploadFile); // create a buffer of maximum size int bytesAvailable = fileInputStream.available(); int maxBufferSize = 1024; int bufferSize = Math.min(bytesAvailable, maxBufferSize); byte[] buffer = new byte[bufferSize]; // read file and write it into form... int bytesRead = fileInputStream.read(buffer, 0, bufferSize); //************************************************************* //Add Value Pairs for Parameters to pass to the Webservice //************************************************************* List&lt;NameValuePair&gt; nameValuePairs = new ArrayList&lt;NameValuePair&gt;(2); //nameValuePairs.add(new BasicNameValuePair(buffer)); nameValuePairs.add(new BasicNameValuePair("filename", mMyFilename)); } catch (MalformedURLException ex) { // Log.e(Tag, "error: " + ex.getMessage(), ex); } catch (IOException ioe) { String s = ""; //Log.e(Tag, "error: " + ioe.getMessage(), ioe); } } </code></pre> <p>}</p> <p>The Web Service:</p> <pre><code>[WebMethod] public void PutFile(byte[] buffer, string filename) { string serverpath; //serverpath = @"\\63.237.52.201\UploadFiles\Incoming\"; serverpath = @"C:\Temp\"; //BinaryWriter binWriter = new BinaryWriter(File.Open(Server.MapPath(filename), FileMode.CreateNew, FileAccess.ReadWrite)); BinaryWriter binWriter = new BinaryWriter(File.Open(serverpath + filename, FileMode.CreateNew, FileAccess.ReadWrite)); binWriter.Write(buffer); binWriter.Close(); } </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload