httpput上傳
1. android httpput上傳json數據返回 415錯誤
把錯誤信息貼出來吧
2. http請求方法
http的請求方法如下
1、OPTIONS:返回伺服器針對特定資源所支持的HTTP請求方法,也可以利用向web伺服器發送『*』的請求來測試伺服器的功能性
2、HEAD:向伺服器索與GET請求相一致的響應,只不過響應體將不會被返回。這一方法可以再不必傳輸整個響應內容的情況下,就可以獲取包含在響應小消息頭中的元信息。
3、GET:向特定的資源發出請求。注意:GET方法不應當被用於產生「副作用」的操作中,例如在Web Application中,其中一個原因是GET可能會被網路蜘蛛等隨意訪問。Loadrunner中對應get請求函數:web_link和web_url
4、POST:向指定資源提交數據進行處理請求(例如提交表單或者上傳文件)。數據被包含在請求體中。POST請求可能會導致新的資源的建立和/或已有資源的修改。 Loadrunner中對應POST請求函數:web_submit_data,web_submit_form
5、PUT:向指定資源位置上傳其最新內容
6、DELETE:請求伺服器刪除Request-URL所標識的資源
7、TRACE:回顯伺服器收到的請求,主要用於測試或診斷
8、CONNECT:HTTP/1.1協議中預留給能夠將連接改為管道方式的代理伺服器。
3. 請問你是如何用HTTP的PUT方式發送請求的,拜託了幫幫忙,急急急,在線等
這個是源碼,我從我們現在的項目中復制出來的,也可以用這個方法發送get、head、delete請求
public static String sendGetResult(String url, int timeOut, String charset)
{
BufferedReader br = null;
InputStreamReader isr = null;
InputStream is = null;
HttpURLConnection huc = null;
StringBuffer result = new StringBuffer("");
URL newUrl = null;
String line = null;
try {
newUrl = new URL(url);
huc = (HttpURLConnection)newUrl.openConnection();
huc.setRequestMethod("PUT");
if (timeOut > 0) {
huc.setConnectTimeout(timeOut);
huc.setReadTimeout(timeOut);
}
int state = huc.getResponseCode();
if ((state > 207) || (state < 200))
return null;
int state;
is = huc.getInputStream();
isr = charset != null ? new InputStreamReader(is, charset) :
new InputStreamReader(is);
br = new BufferedReader(isr);
while ((line = br.readLine()) != null) {
result.append("\r\n");
result.append(line);
}
String str1 = result.toString().trim();
return str1;
}
catch (IOException ioe)
{
return null;
} catch (OutOfMemoryError menorException) {
System.out.println("發送PUT請求內存溢出,內存佔用:" +
result.capacity());
System.out.println("本溢出請求地址:" + url);
System.gc();
return null;
} catch (Exception e) {
e.printStackTrace();
System.out.println("發送Put請求異常!" + e.getMessage());
return null;
}
finally {
try {
if (is != null) {
is.close();
}
if (isr != null) {
isr.close();
}
if (br != null) {
br.close();
}
if (huc != null) {
huc.disconnect();
}
result = null;
} catch (Exception e) {
System.out.println("發送Put請求時關閉流和對象出錯");
}
}
}
4. HTTP提交方式之PUT詳細介紹及POST和PUT的區別
POST是用來提交數據的。提交的數據放在HTTP請求的正文里,目的在於提交數據並用於伺服器端的存儲,而不允許用戶過多的更改相應數據(主要是相對於在url 修改要麻煩很多)。
PUT操作是冪等的。所謂冪等是指不管進行多少次操作,結果都一樣。比如我用PUT修改一篇文章,然後在做同樣的操作,每次操作後的結果並沒有不同
POST操作既不是安全的,也不是冪等的,比如常見的POST重復載入問題:當我們多次發出同樣的POST請求後,其結果是創建出了若乾的資源。
安全和冪等的意義在於:當操作沒有達到預期的目標時,我們可以不停的重試,而不會對資源產生副作用。從這個意義上說,POST操作往往是有害的,但很多時候我們還是不得不使用它。
還有一點需要注意的就是,創建操作可以使用POST,也可以使用PUT,區別在於POST 是作用在一個集合資源之上的(/articles),而PUT操作是作用在一個具體資源之上的(/articles/123),再通俗點說,如果URL可以在客戶端確定,那麼就使用PUT,如果是在服務端確定,那麼就使用POST,比如說很多資源使用資料庫自增主鍵作為標識信息,而創建的資源的標識信息到底是什麼只能由服務端提供,這個時候就必須使用POST。
5. HTTP提交方式之PUT詳細介紹及POST和PUT的區別
HTTP提交方式之PUT詳細介紹及POST和PUT的區別
循環結構是程序中一種很重要的結構。其特點是,在給定條件成立時,反復執行某程序段,直到條件不成立為止。給定的條件稱為循環條件,反復執行的程序段稱為循環體。C語言提供了多種循環語句,可以組成各種不同形式的循環結構。
1) 用goto語句和if語句構成循環;
2) 用while語句;
3) 用do-while語句;
4) 用for語句;
6.2 goto語句以及用goto語句構成循環
goto語句是一種無條件轉移語句, 與BASIC中的goto語句相似。goto 語句的使用格式為:
goto 語句標號;
其中標號是一個有效的標識符,這個標識符加上一個「:」一起出現在函數內某處, 執行goto語句後,程序將跳轉到該標號處並執行其後的語句。另外標號必須與goto語句同處於一個函數中,但可以不在一個循環層中。通常goto語句與if條件語句連用, 當滿足某一條件時, 程序跳到標號處運行。
goto語句通常不用,主要因為它將使程序層次不清,且不易讀,但在多層嵌套退出時, 用goto語句則比較合理。
【例6.1】用goto語句和if語句構成循環, 。
6. HTTP提交方式之PUT詳細介紹及POST和PUT的區別
Http定義了與 伺服器的交互方法,其中除了一般我們用的最多的GET,POST 其實還有PUT和DELETE
根據RFC2616標准(現行的HTTP/1.1)其實還有OPTIONS,GET,HEAD,POST,PUT,DELETE,TRACE,CONNECT
簡單地結束一下吧。
1、PUT: 把消息本體中的消息發送到一個URL,跟POST類似,但不常用。
簡單地說:通常用於向伺服器發送請求,如果URI不存在,則要求伺服器根據請求創建資源,如果存在,伺服器就接受請求內容,並修改URI資源的原始版本。
-----PUT請求那些封裝在Request-URI的實體。如果Request-URI引用一個已存在的資源,則該封裝實體應該作為原始伺服器上的修改版本。如果Request-URI不是指向一個已存在的資源,並且該URI可被請求的用戶代碼定義為新資源,則原始伺服器可用此URI創建新的資源。如果新的資源被創建,這個原始伺服器就必須通過201(Created)響應通知用戶代理。如果已有資源被修改,則發送200或者204響應,表示成功完成了該請求。如果Request-URI既沒有創建也沒有修改資源,則應給予適當的錯誤響應來反映問題本質。實體的接受者不能忽略任何不理解或沒有實現的Content-*(如Content-Range)頭部,並且必須返回501響應。
如果請求經過緩存,並且Request-URI標識出一個或多個當前緩存的實體,則那些實體視為過期了。該方法的響應不會被緩存。
2、POST和PUT的請求根本區別
POST請求的URI表示處理該封閉實體的資源,該資源可能是個數據接收過程、某種協議的網關、或者接收註解的獨立實體。然而,PUT請求中的URI表示請求中封閉的實體-用戶代理知道URI的目標,並且伺服器無法將請求應用到其他資源。如果伺服器希望該請求應用到另一個URI,就必須發送一個301響應;用戶代理可通過自己的判斷來決定是否轉發該請求。
HTTP/1.1沒有定義一個PUT請求如何影響原始伺服器的狀態。
PUT請求必須遵守信息傳輸要求。
除非另有說明,PUT請求中的實體頭部應該用於PUT創建或修改的資源上。
7. 怎麼用http上傳一個文件到伺服器 python
首先,標准HTTP協議對上傳文件等表單的定義在這里:wwwietforg/rfc/rfc1867txt 大概數據包格式如下:
單文件:
Content-type: multipart/form-data, boundary=AaB03x
--AaB03x
content-disposition: form-data; name="field1"
Joe Blow
--AaB03x
content-disposition: form-data; name="pics"; filename="file1.txt"
Content-Type: text/plain
... contents of file1.txt ...
--AaB03x--
多文件:
Content-type: multipart/form-data, boundary=AaB03x
--AaB03x
content-disposition: form-data; name="field1"
Joe Blow
--AaB03x
content-disposition: form-data; name="pics"
Content-type: multipart/mixed, boundary=BbC04y
--BbC04y
Content-disposition: attachment; filename="file1.txt"
其次,python上傳文件的幾種方法:
1 自己封裝HTTP的POST數據包:http//stackoverflowcom/questions/680305/using-multipartposthandler-to-post-form-data-with-python
import httplibimport mimetypesdef post_multipart(host, selector, fields, files): content_type, body = encode_multipart_formdata(fields, files) h = httplib.HTTP(host) h.putrequest('POST', selector) h.putheader('content-type', content_type) h.putheader('content-length', str(len(body))) h.endheaders() h.send(body) errcode, errmsg, headers = h.getreply() return h.file.read() def encode_multipart_formdata(fields, files): LIMIT = '----------lImIt_of_THE_fIle_eW_$' CRLF = '\r\n' L = [] for (key, value) in fields: L.append('--' + LIMIT) L.append('Content-Disposition: form-data; name="%s"' % key) L.append('') L.append(value) for (key, filename, value) in files:
8. http請求中PUT GET POST區別
1. get是從伺服器上獲取數據,post是向伺服器傳送數據。
2. get是把參數數據隊列加到提交表單的ACTION屬性所指的URL中,值和表單內各個欄位一一對應,在URL中可以看到。post是通過HTTP post機制,將表單內各個欄位與其內容放置在HTML HEADER內一起傳送到ACTION屬性所指的URL地址。用戶看不到這個過程。
3. 對於get方式,伺服器端用Request.QueryString獲取變數的值,對於post方式,伺服器端用Request.Form獲取提交的數據。
4. get傳送的數據量較小,不能大於2KB。post傳送的數據量較大,一般被默認為不受限制。但理論上,IIS4中最大量為80KB,IIS5中為100KB。
5. get安全性非常低,post安全性較高。但是執行效率卻比Post方法好。
建議:
1、get方式的安全性較Post方式要差些,包含機密信息的話,建議用Post數據提交方式;
2、在做數據查詢時,建議用Get方式;而在做數據添加、修改或刪除時,建議用Post方式;
9. http中的put,delete等請求為什麼不安全
http中的put,delete等請求為什麼不安全?
答案:開啟了WebDAV 的 IIS 允許匿名訪問者直接通過 PUT 往伺服器上上傳文件,曾經導致了很多嚴重的漏洞,具體可以搜下 IIS put 。
此外 apache 默認允許 trace, 又導致了一批XSS。
這些歷史問題給運維造成很不好的印象,所以乾脆把除必須的http頭外都禁掉了事。