I stawiać czoło problem w wizerunek kartoteka jako binarny dane webpage.
If I wysyłać the Formularzowy dane using the Formularzowy etykietka Action=URL i Method= " Poczta ", I m the wymagany sukces result.
http://www.w3.org/1 999/xhtml " >
But, jeżeli I próbować the wizerunek dane using the "HTTPWebRequest" the chodnikowiec, dane i przyczepa, I m sprawnie the odpowiedź od the wysłany URL, ale the wizerunek przekształcać się. [The cel URL " http://www.babypredictor. com.au/gat eway/api.php" otrzymywać (1) lub 2 wizerunek my wysyłać i przekształcać się w pojedynczy pic i wysyłać the sukces URL].
Looks I m niektóre błąd w the HTTP wiadomość podczas gdy przeniesienie the cel URL. Móc poczta pomagać the zagadnienie i ono praca jak the normalny Formularzowy Poczta.
Attached być mój rozwiązanie. Ty móc używać VS 2008.
I próbować using Firebug debug the poczta HTTP surowy dane i ono patrzeć prawie patrzeć dla oba FORMULARZOWY przeniesienie i HTTPWebRequest Przeniesienie, ale the wizerunek przekształcać się dla mój opóźniony. Życzenie sznurek móc the zagadnienie i pomoc me.
Here być mój HTTPWebRequest Poczta Kod Snippet.
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// jawny kawitacyjny HttpUploadFile (smyczkowy url, HttpPostedFile file1, HttpPostedFile file2, smyczkowy paramName, smyczkowy contentType, NameValueCollection nvc) //public kawitacyjny HttpUploadFile (smyczkowy url, smyczkowy file1, smyczkowy file2, smyczkowy paramName, smyczkowy contentType, NameValueCollection nvc) { //log.Debug (sznurek. Format ( " Uploading {(0)} {(1)}", kartoteka, url)); smyczkowy granica = "---------------------------" + DateTime.Now.Ticks.ToString ("x"); bajt [] boundarybytes = System.Text.Encoding.ASCII.GetBytes (" \ r \ n--" + granica + "\ r \ n");
HttpWebRequest wr = (HttpWebRequest) WebRequest.Create (url); wr.ContentType = "dane/tworzyć-dane; boundary=" + granica; wr. Metoda = "POCZTA"; wr.KeepAlive = true; wr. Referencje = System.Net.CredentialCache.DefaultCredentials; wr.Referer = url;
wr.Akceptować = "tekst/xml, zastosowanie/xml, application/xhtml+xml, tekst/html; q=0.9, text/plain; q=0.8, image/png, */*; q=0.5"; wr.UserAgent = "Mozilla/4.0 (zgodny; MSIE 6.0; Windows NT 5.1; Q312461; .NET CLR 1.0.3705)"; //wr.Accept = "wizerunek/gif, image/x-xbitmap, wizerunek/jpeg, wizerunek/pjpeg, application/vnd.ms-excel, zastosowanie/msword, application/x-shockwave-flash, */*";
Strumień rs = wr.GetRequestStream ();
smyczkowy formitem, chodnikowiec;
smyczkowy formdataTemplate = "Zadawalać-Usposobienie: tworzyć-dane; name= \" {(0)} \ "\ r \ n \ r \ n {(1)}"; foreach (smyczkowy klucz w nvc. Klucz) { rs. Pisać (boundarybytes, (0), boundarybytes. Długość); formitem = sznurek. Format (formdataTemplate, klucz, nvc [klucz]); bajt [] formitembytes = System.Text.Encoding.ASCII.GetBytes (formitem); rs.Pisać (formitembytes, (0), formitembytes. Długość); }
rs. Pisać (boundarybytes, (0), boundarybytes. Długość); smyczkowy headerTemplate = "Zadawalać-Usposobienie: tworzyć-dane; name= \" {(0)} \ "; filename= \" {(1)} \ "\ r \ nContent-Type: {2} \ r \ n \ r \ n"; chodnikowiec = sznurek. Format (headerTemplate, paramName, file1, contentType); bajt [] headerbytes = System.Text.Encoding.ASCII.GetBytes (header); rs. Pisać (headerbytes, (0), headerbytes. Długość);
Strumień file1Stream = file1.InputStream; //FileStream fileStream = nowy FileStream (file1.FileName, FileMode.Open, FileAccess.Read); bajt [] odbojnica = nowy bajt [4096]; int bytesRead = (0); podczas gdy ((bytesRead = file1Stream.Read (odbojnica, (0), odbojnica. Długość)) ! = (0)) { bajt [] encodedbuffer = System.Text.Encoding.ASCII.GetBytes (System.Text.ASCIIEncoding.ASCII.GetString (odbojnica)); rs. Pisać (encodedbuffer, (0), bytesRead); } //fileStream.Close ();
jeżeli (file2.FileName! =string. Empty) { chodnikowiec = sznurek. Format (headerTemplate, paramName, file2, contentType); headerbytes = System.Text.Encoding.ASCII.GetBytes (header); rs. Pisać (headerbytes, (0), headerbytes. Długość);
//fileStream = nowy FileStream (file2.FileName, FileMode.Open, FileAccess.Read); Strumień file2Stream = file2.InputStream; bytesRead = (0); podczas gdy ((bytesRead = file2Stream.Read (odbojnica, (0), odbojnica. Długość)) ! = (0)) { bajt [] encodedbuffer = System.Text.Encoding.ASCII.GetBytes (System.Text.ASCIIEncoding.ASCII.GetString (odbojnica)); rs. Pisać (odbojnica, (0), bytesRead); } //fileStream.Close (); }
bajt [] przyczepa = System.Text.Encoding.ASCII.GetBytes (" \ r \ n--" + granica + "--\ r \ n"); rs. Pisać (przyczepa, (0), przyczepa. Długość); rs. Zakończenie ();
WebResponse wresp = null; try { wresp = wr.GetResponse (); Strumień stream2 = wresp.GetResponseStream (); StreamReader reader2 = nowy StreamReader (stream2); //log.Debug (sznurek. Format ( " Kartoteka być, serwer odpowiedź być: {(0)}", reader2.ReadToEnd ()));
smyczkowy odpowiedź = reader2.ReadToEnd ();
jeżeli (response.ToLower (). Contains ("success")) { smyczkowy ResponseURL = odpowiedź. Substring (response.IndexOf ( " sukces: ") + "sukces: ". Długość);
Result.Text = odpowiedź + "
" + ""; } else Result.Text = odpowiedź + " "; } chwyt (Wyjątek kartoteka) { //log.Error ("Błąd uploading kartoteka", kartoteka); } finally { jeżeli (wresp! = null) { wresp. Zakończenie (); wresp = null; } wr = null; } }
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-Pamboo
(1):
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188:
189:
190:
191:
192:
193:
194:
|
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Drawing;
using System.IO;
using System.Net;
using System.Text;
using System.Collections;
using System.Collections.Specialized;
using System.Security.Cryptography;
using System.Configuration;
namespace YuuBabies
{
jawny częściowy klasowy _Default: System.Web.UI.Page
{
intymny smyczkowy secrect_code;
ochraniać kawitacyjny Page_Load (przedmiot nadawca, EventArgs e)
{
jeżeli (! IsPostBack)
{
secrect_code = ConfigurationManager.AppSettings ["Secret_code"];
Przypadkowy przypadkowy = nowy Przypadkowy ();
int randomNo = przypadkowy. Następnie (99999);
transaction_id. Tekst = (randomNo < 1000)? (1000 + randomNo) .ToString (): randomNo.ToString ();
ochrona. Tekst = GetMD5Hash ("yuz00b3byP" + transaction_id. Tekst);
}
}
społeczeństwo smyczkowy GetMD5Hash (smyczkowy originalString)
{
bajt [] textBytes = System.Text.Encoding.Default.GetBytes (originalString);
próba
{
System.Security.Cryptography.MD5CryptoServiceProvider cryptHandler;
cryptHandler = nowy System.Security.Cryptography.MD5CryptoServiceProvider ();
bajt [] hash = cryptHandler.ComputeHash (textBytes);
sznurek zmiękczać = "";
foreach (bajt a w hash)
{
jeżeli (a < 16)
zmiękczać += "(0)" + a.ToString ("x");
inny
zmiękczać += a.ToString ("x");
}
powrót zmiękczać;
}
chwyt
{
rzut;
}
}
ochraniać kawitacyjny Submit_Click (przedmiot nadawca, EventArgs e)
{
HttpPostedFile file1 = image1Data.PostedFile;
HttpPostedFile file2 = image2Data.PostedFile;
jeżeli (file1.FileName! =string. Pusty)
{
NameValueCollection nvc = nowy NameValueCollection ();
nvc. Dodawać ("image1DataID", image1DataID.Text);
nvc. Dodawać ("image2DataID", image2DataID.Text);
nvc. Dodawać ("transaction_id", transaction_id. Tekst);
nvc. Dodawać ("ochrona", ochrona. Tekst);
nvc. Dodawać ("misc1", misc1.Text);
nvc. Dodawać ("misc2", misc2.Text);
nvc. Dodawać ("misc3", misc3.Text);
nvc. Dodawać ("misc4", misc4.Text);
//HttpUploadFile (" http://www.babypredictor.com.au/gateway/api.php", imagefile1FullPathName.Value, imagefile2FullPathName.Value, "kartoteka", "wizerunek/jpeg", nvc);
HttpUploadFile ("http://www.babypredictor.com.au/gateway/api.php", file1, file2, "kartoteka", "wizerunek/jpeg", nvc);
}
}
jawny kawitacyjny HttpUploadFile (smyczkowy url, HttpPostedFile file1, HttpPostedFile file2, smyczkowy paramName, smyczkowy contentType, NameValueCollection nvc)
//public kawitacyjny HttpUploadFile (smyczkowy url, smyczkowy file1, smyczkowy file2, smyczkowy paramName, smyczkowy contentType, NameValueCollection nvc)
{
//log.Debug (sznurek. Format ("Kartoteka {(0)} {(1)}", kartoteka, url));
smyczkowy granica = "---------------------------" + DateTime.Now.Ticks.ToString ("x");
bajt [] boundarybytes = System.Text.Encoding.ASCII.GetBytes ("\ r \ n--" + granica + "\ r \ n");
HttpWebRequest wr = (HttpWebRequest) WebRequest.Create (url);
wr.ContentType = "dane/tworzyć-dane; boundary=" + granica;
wr. Metoda = "POCZTA";
wr.KeepAlive = true;
wr. Referencje = System.Net.CredentialCache.DefaultCredentials;
wr. Referer = url;
wr. Akceptować = "tekst/xml, zastosowanie/xml, zastosowanie/xhtml+xml, tekst/html; q=0.9, tekst/równina; q=0.8, wizerunek/png, */*; q=0.5";
wr.UserAgent = "Mozilla/4.0 (zgodny; MSIE 6.0; Windows NT 5.1; Q312461; .NET CLR 1.0.3705)";
//wr.Accept = "wizerunek/gif, image/x-xbitmap, wizerunek/jpeg, wizerunek/pjpeg, zastosowanie/vnd.ms-excel, zastosowanie/msword, application/x-shockwave-flash, */*";
Strumień rs = wr.GetRequestStream ();
smyczkowy formitem, chodnikowiec;
smyczkowy formdataTemplate = "Zadawalać-Usposobienie: tworzyć-dane; name= \" {(0)} \ "\ r \ n \ r \ n {(1)}";
foreach (smyczkowy klucz w nvc. Klucz)
{
rs. Pisać (boundarybytes, (0), boundarybytes. Długość);
formitem = sznurek. Format (formdataTemplate, klucz, nvc [klucz]);
bajt [] formitembytes = System.Text.Encoding.ASCII.GetBytes (formitem);
rs. Pisać (formitembytes, (0), formitembytes. Długość);
}
rs. Pisać (boundarybytes, (0), boundarybytes. Długość);
smyczkowy headerTemplate = "Zadawalać-Usposobienie: tworzyć-dane; name= \" {(0)} \ "; filename= \" {(1)} \ "\ r \ nContent-Typ: {2} \ r \ n \ r \ n";
chodnikowiec = sznurek. Format (headerTemplate, paramName, file1, contentType);
bajt [] headerbytes = System.Text.Encoding.ASCII.GetBytes (chodnikowiec);
rs. Pisać (headerbytes, (0), headerbytes. Długość);
Strumień file1Stream = file1.InputStream;
//FileStream fileStream = nowy FileStream (file1.FileName, FileMode.Open, FileAccess.Read);
bajt [] odbojnica = nowy bajt [4096];
int bytesRead = (0);
podczas gdy ((bytesRead = file1Stream.Read (odbojnica, (0), buforować. Długość)) ! = (0))
{
bajt [] encodedbuffer = System.Text.Encoding.ASCII.GetBytes (System.Text.ASCIIEncoding.ASCII.GetString (odbojnica));
rs. Pisać (encodedbuffer, (0), bytesRead);
}
//fileStream.Close ();
jeżeli (file2.FileName! =string. Pusty)
{
chodnikowiec = sznurek. Format (headerTemplate, paramName, file2, contentType);
headerbytes = System.Text.Encoding.ASCII.GetBytes (chodnikowiec);
rs. Pisać (headerbytes, (0), headerbytes. Długość);
//fileStream = nowy FileStream (file2.FileName, FileMode.Open, FileAccess.Read);
Strumień file2Stream = file2.InputStream;
bytesRead = (0);
podczas gdy ((bytesRead = file2Stream.Read (odbojnica, (0), buforować. Długość)) ! = (0))
{
bajt [] encodedbuffer = System.Text.Encoding.ASCII.GetBytes (System.Text.ASCIIEncoding.ASCII.GetString (odbojnica));
rs. Pisać (odbojnica, (0), bytesRead);
}
//fileStream.Close ();
}
bajt [] przyczepa = System.Text.Encoding.ASCII.GetBytes ("\ r \ n--" + granica + "--\ r \ n");
rs. Pisać (przyczepa, (0), przyczepa. Długość);
rs. Zakończenie ();
WebResponse wresp = null;
próba
{
wresp = wr.GetResponse ();
Strumień stream2 = wresp.GetResponseStream ();
StreamReader reader2 = nowy StreamReader (stream2);
//log.Debug (sznurek. Format ("Kartoteka być, serwer odpowiedź być: {(0)}", reader2.ReadToEnd ()));
smyczkowy odpowiedź = reader2.ReadToEnd ();
jeżeli (response.ToLower (). Zawierać ("sukces"))
{
smyczkowy ResponseURL = odpowiedź. Substring (response.IndexOf ("sukces: ") + "sukces: ". Długość);
Result.Text = odpowiedź + "
" + "";
}
inny
Result.Text = odpowiedź + " ";
}
chwyt (Wyjątek wyjątek)
{
//log.Error ("Błąd uploading kartoteka", kartoteka);
}
w końcu
{
jeżeli (wresp! = null)
{
wresp. Zakończenie ();
wresp = null;
}
wr = null;
}
}
}
}
|
|