Hello Anthony
probably the API works with multipart form data
I have once written an example here in this group for someone who needed
this for the twitpic API
dig dig dig dig ,,,,,,,,
And here it is , the code sends a picture and some text to a twitter
account with the webrequest as you see you can send parameters as form data
see if you can convert it to your needs or maybe it gives you some ideas on
how to do what you want .
<<<<
'Michel Posseth [MCP]
'Created : 23-02-2009
'i...@VbDotNetCoder.com
Imports System
Imports System.IO
Imports System.Net
Imports System.Xml
Imports System.Web
Imports System.Collections.Generic
Imports System.Text
Namespace VBDC
Public Class ClsTwitPic
Public Function SendPicToTwitPic(ByVal userName As String, ByVal
password As String, ByVal Message As String, ByVal ImgPath As String) As
String
Using fs As System.IO.FileStream = New FileStream(ImgPath,
FileMode.Open, FileAccess.Read)
Dim ImgData As Byte() = New Byte(fs.Length - 1) {}
fs.Read(ImgData, 0, ImgData.Length)
Return SendPicToTwitPic(userName, password, ImgData,
Message)
End Using
End Function
Private Function SendPicToTwitPic(ByVal UserName As String, ByVal
PassWord As String, ByVal Image As Byte(), Optional ByVal Message As String
= "", Optional ByVal Uri As String = "http://twitpic.com/api/uploadAndPost")
As String
Dim ret As String = String.Empty
Dim request As HttpWebRequest =
DirectCast(WebRequest.Create(Uri), HttpWebRequest)
request.Method = "POST"
request.Timeout = 30000
If Not String.IsNullOrEmpty(UserName) AndAlso Not
String.IsNullOrEmpty(PassWord) Then
Dim boundary As String = System.Guid.NewGuid().ToString()
request.Credentials = New NetworkCredential(UserName,
PassWord)
request.Headers.Add("Accept-Language",
request.PreAuthenticate = True
request.ContentType =
String.Format("multipart/form-data;boundary={0}", boundary)
Dim header As String = String.Format("--{0}", boundary)
Dim footer As String = header & "--"
Dim contents As New StringBuilder()
contents.Append(header)
contents.Append(vbCrLf)
contents.Append("Content-Disposition:
form-data;name=""username""" & vbCrLf)
contents.Append(vbCrLf)
contents.Append(UserName)
contents.Append(vbCrLf)
contents.Append(header)
contents.Append(vbCrLf)
contents.Append("Content-Disposition:
form-data;name=""password""" & vbCrLf)
contents.Append(vbCrLf)
contents.Append(PassWord)
contents.Append(vbCrLf)
If Not String.IsNullOrEmpty(Message) Then
contents.Append(header)
contents.Append(vbCrLf)
contents.Append("Content-Disposition:
form-data;name=""message""" & vbCrLf)
contents.Append(vbCrLf)
contents.Append(Message)
contents.Append(vbCrLf)
End If
contents.Append(header)
contents.Append(vbCrLf)
contents.Append("Content-Disposition:form-data;
name=""media"";filename=""image.jpg""" & vbCrLf)
contents.Append("Content-Type: image/jpeg" & vbCrLf)
contents.Append(vbCrLf)
Dim Einde As String = vbCrLf & header & vbCrLf
Dim BodyBytes As Byte() =
Encoding.UTF8.GetBytes(contents.ToString())
Dim footerBytes As Byte() = Encoding.UTF8.GetBytes(Einde)
request.ContentLength = BodyBytes.Length + Image.Length +
footerBytes.Length
Using requestStream As Stream = request.GetRequestStream()
requestStream.Write(BodyBytes, 0, BodyBytes.Length)
requestStream.Write(Image, 0, Image.Length)
requestStream.Write(footerBytes, 0, footerBytes.Length)
requestStream.Flush()
requestStream.Close()
Using response As WebResponse = request.GetResponse()
Using reader As New
StreamReader(response.GetResponseStream())
ret = reader.ReadToEnd()
End Using
End Using
End Using
End If
Return ret
End Function
End Class
End Namespace
Usage
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
Dim TwitPic As New VBDC.ClsTwitPic
Debug.WriteLine(TwitPic.SendPicToTwitPic("YourUsername",
End Sub
End Class
the response i got was OK
when viewing my twitter account ( michel1973 ) i found my send picture
and the text i entered so it works
Regards
Michel Posseth [MCP] , VBDC
http://www.vbdotnetcoder.com/
HTH
Michel Posseth
>>>
"Anthony Papillion" <papillion@gmail.com> schreef in bericht
news:e06Sa4woKHA.1556@TK2MSFTNGP05.phx.gbl...
> Hello Everyone,
>
> I've been searching this out for almost three weeks and I simply can't
> find an answer anywhere. I see a lot of people asking about it but nobody
> seems to know the answer. Since I've gotten a few questions answered on
> this group before, I'm going to ask the question again here. It's about
> uploading a file as part of a WebRequest.
>
> My application is a mobile one which means I'm using the .NET Compact
> Framework and thus, don't have access to the WebClient.UploadFile method.
> But even if I did, that wouldn't work here since I need to pass several
> parameters along and UploadFile() doesn't allow you to do that anyway.
>
> The documentation to the API I'm working with tells me to create a POST
> request and pass the following data to the API:
>
> Subject - which is the subject of the file being uploaded
> Recipient - the person receiving notification
> Source - The raw binary data of the file to send
>
> Obviously, since the API calls for this, this can be done, but HOW do I do
> it? Note that I need to be able to do this without any third party
> assemblies. It has to be a standard POST using WebRequest.
>
> Can anyone give me some direction?
>
> Thanks!
> Anthony
|