精华内容
下载资源
问答
  • * 如果直接发送ajax=PUT形式的请求 * 封装的数据 * Employee  * [empId=1014, empName=null, gender=null, email=null, dId=null] *  * 问题: * 请求体中有数据; * 但是Employee对象封装不上; * update...
     * 如果直接发送ajax=PUT形式的请求
    * 封装的数据
    * Employee 
    * [empId=1014, empName=null, gender=null, email=null, dId=null]

    * 问题:
    * 请求体中有数据;
    * 但是Employee对象封装不上;
    * update tbl_emp  where emp_id = 1014;

    * 原因:
    * Tomcat:
    * 1、将请求体中的数据,封装一个map。
    * 2、request.getParameter("empName")就会从这个map中取值。
    * 3、SpringMVC封装POJO对象的时候。
    * 会把POJO中每个属性的值,request.getParamter("email");
    * AJAX发送PUT请求引发的血案:
    * PUT请求,请求体中的数据,request.getParameter("empName")拿不到
    * Tomcat一看是PUT不会封装请求体中的数据为map,只有POST形式的请求才封装请求体为map
    * org.apache.catalina.connector.Request--parseParameters() (3111);

    * protected String parseBodyMethods = "POST";
    * if( !getConnector().isParseBodyMethod(getMethod()) ) {
                    success = true;
                    return;
                }


    * 解决方案;
    * 我们要能支持直接发送PUT之类的请求还要封装请求体中的数据
    * 1、配置上Spring提供的HttpPutFormContentFilter;
    * 2、他的作用;将请求体中的数据解析包装成一个map。
    * 3、request被重新包装,request.getParameter()被重写,就会从自己封装的map中取数据

    * 员工更新方法


    在web.xml中添加一个新的filter

     

    <filter>
            <filter-name>HttpPutFormContentFilter</filter-name>
            <filter-class>org.springframework.web.filter.HttpPutFormContentFilter</filter-class>
        </filter>
        <filter-mapping>
            <filter-name>HttpPutFormContentFilter</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>z

    这样就可以正常的使用PUT了

    展开全文
  • 向服务器提交数据

    2016-12-13 12:09:00
    有时你需要通过URLConnection向服务器写入数据,例如,使用POST向Web服务器提交表单,或使用PUT上传文件。getOutputStream() 方法返回一个OutputStream,可以用来向服务器发送数据。由于URLConnection 在默认情况下...

    导语

    有时你需要通过URLConnection向服务器写入数据,例如,使用POST向Web服务器提交表单,或使用PUT上传文件。getOutputStream() 方法返回一个OutputStream,可以用来向服务器发送数据。由于URLConnection 在默认情况下不允许输出,所以在请求输出流之前必须调用setDoOutput(true)。当将一个http URL的doOutput设置为true时,请求方式将会由GET变为POST方法。

    一个小案例

    try {
                URL u = new URL("http://www.xdysite.cn/index.php");
                URLConnection uc = u.openConnection();
                uc.setDoOutput(true);
                try (Writer w = new BufferedWriter(new OutputStreamWriter(uc.getOutputStream()))) {
                    w.write("username=xdy&password=123456");
                }
            } catch (MalformedURLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }

    向服务器提交表单

    上面的只是一个小案例来说明如何向服务器提交数据,下面我们将其功能进行完善。尽可能使用JAVA的封装特性。QueryString用于生成一个合法的表单。FormPoster 类提供表单的提交。在main方法中进行测试以及输出服务器返回的数据。

    QueryString类
    public class QueryString {
        StringBuilder sb;
        public QueryString(){
            sb = new StringBuilder();
        }
        
        public void add(String key, String val) {
            sb.append(key + "=" + val + "&");
        }
    
        @Override
        public String toString() {
            sb.append("needless=0");
            return sb.toString();
        }
    }

    FormPoster类

    public class FormPoster {
        private URL url;
        private QueryString query = new QueryString();
        
        public FormPoster (URL _url) {
            if(!_url.getProtocol().toLowerCase().startsWith("http"))
                throw new IllegalArgumentException("Posting only works for http URLs");
            url = _url;
        }
        
        public void add(String name, String value) {
            query.add(name, value);
        }
        
        public URL getURL() {
            return url;
        }
        
        public InputStream post() throws IOException {
            URLConnection uc = url.openConnection();
            uc.setDoOutput(true);
            try (BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(uc.getOutputStream()))) {
                bw.write(query.toString());
                bw.write("\r\n");
            }
            return uc.getInputStream();
        }
    }

    测试方法

    public static void main(String[] args) {
            URL url;
            try {
                url = new URL("http://www.xdysite.cn/index.php");
            } catch (MalformedURLException e) {
                e.printStackTrace();
                return;
            }
            
            FormPoster poster = new FormPoster(url);
            poster.add("username", "xdy");
            poster.add("password", "12345");
            
            try (Reader r = new InputStreamReader(poster.post())) {
                int c;
                while ((c = r.read()) != -1) {
                    System.out.print((char)c);
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

    转载于:https://www.cnblogs.com/xidongyu/p/6169080.html

    展开全文
  • 我们知道,android手机客户端在与服务器做数据交互常常会用到一些常见的HTTP协议操作,这里就讲一下如何使用原生的Get与Put方式提交参数,以及使用开源项目HttpClient。 Get方式 使用Get方式提交参数到web服务器,...

    我们知道,android手机客户端在与服务器做数据交互常常会用到一些常见的HTTP协议操作,这里就讲一下如何使用原生的Get与Put方式提交参数,以及使用开源项目HttpClient。

    • Get方式
    使用Get方式提交参数到web服务器,需要以请求地址后面附加参数的形式,例如:http://www.cnblogs.com?id=xxx&name=xxx,那么在android客户端中,我们需要直接追加参数到请求地址即可。

    	public boolean sendGetRequest(String path,Map<String , String > params,String encoding) throws MalformedURLException, IOException{
    		//直接向请求地址附加参数
    		StringBuilder sb = new StringBuilder(path);
    		
    		sb.append("?");
    		
    		if (params != null && !params.isEmpty()) {
    			
    			for(Map.Entry<String, String> entry : params.entrySet()){
    				
    				sb.append(entry.getKey()).append("=");
    				

    //需要设定编码方式支持中文,TOMCAT服务器使用IOS-8859-1,服务器需要处理编码,这里也需要设置编码

    sb.append(URLEncoder.encode(entry.getValue(), encoding)).append("&");

    } //去掉最后一个多余的& sb.deleteCharAt(sb.toString().length() - 1); //建立连接 HttpURLConnection urlConnection = (HttpURLConnection)new URL(sb.toString()).openConnection(); //需要大写 urlConnection.setRequestMethod("GET"); //设置请求超时时间 urlConnection.setReadTimeout(5 * 1000); //判断是否请求正确,必须,因为可能请求到的是错误页面 if (urlConnection.getResponseCode() == 200) { return true; } } return false; }
    • Post方式
    使用post需要注意几点,必须设置输出方式,必须指定content-type与content-length,如下:
     /** 
         * 通过Post方式提交参数给服务器 
         * @param path 
         * @param params 
         * @param enc 
         * @return 
         * @throws Exception 
         */  
        public static boolean sendPostRequest(String path, Map<String, String> params, String enc) throws Exception  
        {  
            //需要构造的字符串形式如下:  
            // title=dsfdsf&timelength=23&method=save  
            StringBuilder sb = new StringBuilder();  
            //如果参数不为空  
            if(params!=null && !params.isEmpty())  
            {  
                for(Map.Entry<String, String> entry : params.entrySet())  
                {  
                    //Post方式提交参数的话,不能省略内容类型与长度  
                    sb.append(entry.getKey()).append('=')  
                        .append(URLEncoder.encode(entry.getValue(), enc)).append('&');  
                }  
                sb.deleteCharAt(sb.length()-1);  
            }  
            //得到实体的二进制数据  
            byte[] entitydata = sb.toString().getBytes();  
            URL url = new URL(path);  
            HttpURLConnection conn = (HttpURLConnection)url.openConnection();  
            conn.setRequestMethod("POST");  
            conn.setConnectTimeout(5 * 1000);  
            //如果通过post提交数据,必须设置允许对外输出数据  
            conn.setDoOutput(true);  
            //这里只设置内容类型与内容长度的头字段  
            //内容类型Content-Type: application/x-www-form-urlencoded  
            //内容长度Content-Length: 38  
            conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");  
            conn.setRequestProperty("Content-Length", String.valueOf(entitydata.length));  
            OutputStream outStream = conn.getOutputStream();  
            //把实体数据写入是输出流  
            outStream.write(entitydata);  
            //内存中的数据刷入  
            outStream.flush();  
            outStream.close();  
            //如果请求响应码是200,则表示成功  
            if(conn.getResponseCode()==200)  
            {  
                return true;  
            }  
            return false;  
        }  

    • HttpClient方式
     /** 
         * 在遇上HTTPS安全模式或者操作cookie的时候使用HTTPclient会方便很多 
         * 使用HTTPClient(开源项目)向服务器提交参数 
         * @param path 
         * @param params 
         * @param enc 
         * @return 
         * @throws Exception 
         */  
        public static boolean sendRequestFromHttpClient(String path, Map<String, String> params, String enc) throws Exception  
        {  
            //需要把参数放到NameValuePair  
            List<NameValuePair> paramPairs = new ArrayList<NameValuePair>();  
            if(params!=null && !params.isEmpty())  
            {  
                for(Map.Entry<String, String> entry : params.entrySet())  
                {  
                    paramPairs.add(new BasicNameValuePair(entry.getKey(), entry.getValue()));  
                }  
            }  
            //对请求参数进行编码,得到实体数据  
            UrlEncodedFormEntity entitydata = new UrlEncodedFormEntity(paramPairs, enc);  
            //构造一个请求路径  
            HttpPost post = new HttpPost(path);   
            //设置请求实体  
            post.setEntity(entitydata);  
            //浏览器对象  
            DefaultHttpClient client = new DefaultHttpClient();   
            //执行post请求  
            HttpResponse response = client.execute(post);  
            //从状态行中获取状态码,判断响应码是否符合要求  
            if(response.getStatusLine().getStatusCode()==200)  
            {  
                return true;  
            }  
            return false;  
        }  
    }  


    HttpClient 基本功能的使用

    GET 方法

    使用 HttpClient 需要以下 6 个步骤:

    1. 创建 HttpClient 的实例

    2. 创建某种连接方法的实例,在这里是 GetMethod。在 GetMethod 的构造函数中传入待连接的地址

    3. 调用第一步中创建好的实例的 execute 方法来执行第二步中创建好的 method 实例

    4. 读 response

    5. 释放连接。无论执行方法是否成功,都必须释放连接

    6. 对得到后的内容进行处理

    根据以上步骤,我们来编写用GET方法来取得某网页内容的代码。

    • 大部分情况下 HttpClient 默认的构造函数已经足够使用。
      HttpClient httpClient = new HttpClient();
      

    • 创建GET方法的实例。在GET方法的构造函数中传入待连接的地址即可。用GetMethod将会自动处理转发过程,如果想要把自动处理转发过程去掉的话,可以调用方法setFollowRedirects(false)。
      GetMethod getMethod = new GetMethod("http://www.ibm.com/");
      

    • 调用实例httpClient的executeMethod方法来执行getMethod。由于是执行在网络上的程序,在运行executeMethod方法的时候,需要处理两个异常,分别是HttpException和IOException。引起第一种异常的原因主要可能是在构造getMethod的时候传入的协议不对,比如不小心将"http"写成"htp",或者服务器端返回的内容不正常等,并且该异常发生是不可恢复的;第二种异常一般是由于网络原因引起的异常,对于这种异常 (IOException),HttpClient会根据你指定的恢复策略自动试着重新执行executeMethod方法。HttpClient的恢复策略可以自定义(通过实现接口HttpMethodRetryHandler来实现)。通过httpClient的方法setParameter设置你实现的恢复策略,本文中使用的是系统提供的默认恢复策略,该策略在碰到第二类异常的时候将自动重试3次。executeMethod返回值是一个整数,表示了执行该方法后服务器返回的状态码,该状态码能表示出该方法执行是否成功、需要认证或者页面发生了跳转(默认状态下GetMethod的实例是自动处理跳转的)等。
      //设置成了默认的恢复策略,在发生异常时候将自动重试3次,在这里你也可以设置成自定义的恢复策略
      getMethod.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, 
              new DefaultHttpMethodRetryHandler()); 
      //执行getMethod
      int statusCode = client.executeMethod(getMethod);
      if (statusCode != HttpStatus.SC_OK) {
        System.err.println("Method failed: " + getMethod.getStatusLine());
      }
      

    • 在返回的状态码正确后,即可取得内容。取得目标地址的内容有三种方法:第一种,getResponseBody,该方法返回的是目标的二进制的byte流;第二种,getResponseBodyAsString,这个方法返回的是String类型,值得注意的是该方法返回的String的编码是根据系统默认的编码方式,所以返回的String值可能编码类型有误,在本文的"字符编码"部分中将对此做详细介绍;第三种,getResponseBodyAsStream,这个方法对于目标地址中有大量数据需要传输是最佳的。在这里我们使用了最简单的getResponseBody方法。
      byte[] responseBody = method.getResponseBody();
      

    • 释放连接。无论执行方法是否成功,都必须释放连接。
      method.releaseConnection();
      

    • 处理内容。在这一步中根据你的需要处理内容,在例子中只是简单的将内容打印到控制台。
      System.out.println(new String(responseBody));
      

    下面是程序的完整代码,这些代码也可在附件中的test.GetSample中找到。


    package test;
    import java.io.IOException;
    import org.apache.commons.httpclient.*;
    import org.apache.commons.httpclient.methods.GetMethod;
    import org.apache.commons.httpclient.params.HttpMethodParams;
    public class GetSample{
      public static void main(String[] args) {
      //构造HttpClient的实例
      HttpClient httpClient = new HttpClient();
      //创建GET方法的实例
      GetMethod getMethod = new GetMethod("http://www.ibm.com");
      //使用系统提供的默认的恢复策略
      getMethod.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,
        new DefaultHttpMethodRetryHandler());
      try {
       //执行getMethod
       int statusCode = httpClient.executeMethod(getMethod);
       if (statusCode != HttpStatus.SC_OK) {
        System.err.println("Method failed: "
          + getMethod.getStatusLine());
       }
       //读取内容 
       byte[] responseBody = getMethod.getResponseBody();
       //处理内容
       System.out.println(new String(responseBody));
      } catch (HttpException e) {
       //发生致命的异常,可能是协议不对或者返回的内容有问题
       System.out.println("Please check your provided http address!");
       e.printStackTrace();
      } catch (IOException e) {
       //发生网络异常
       e.printStackTrace();
      } finally {
       //释放连接
       getMethod.releaseConnection();
      }
     }
    }
    

    POST方法

    根据RFC2616,对POST的解释如下:POST方法用来向目的服务器发出请求,要求它接受被附在请求后的实体,并把它当作请求队列(Request-Line)中请求URI所指定资源的附加新子项。POST被设计成用统一的方法实现下列功能:

    • 对现有资源的注释(Annotation of existing resources)
    • 向电子公告栏、新闻组,邮件列表或类似讨论组发送消息
    • 提交数据块,如将表单的结果提交给数据处理过程
    • 通过附加操作来扩展数据库

    调用HttpClient中的PostMethod与GetMethod类似,除了设置PostMethod的实例与GetMethod有些不同之外,剩下的步骤都差不多。在下面的例子中,省去了与GetMethod相同的步骤,只说明与上面不同的地方,并以登录清华大学BBS为例子进行说明。

    • 构造PostMethod之前的步骤都相同,与GetMethod一样,构造PostMethod也需要一个URI参数,在本例中,登录的地址是http://www.newsmth.net/bbslogin2.php。在创建了PostMethod的实例之后,需要给method实例填充表单的值,在BBS的登录表单中需要有两个域,第一个是用户名(域名叫id),第二个是密码(域名叫passwd)。表单中的域用类NameValuePair来表示,该类的构造函数第一个参数是域名,第二参数是该域的值;将表单所有的值设置到PostMethod中用方法setRequestBody。另外由于BBS登录成功后会转向另外一个页面,但是HttpClient对于要求接受后继服务的请求,比如POST和PUT,不支持自动转发,因此需要自己对页面转向做处理。具体的页面转向处理请参见下面的"自动转向"部分。代码如下:
      String url = "http://www.newsmth.net/bbslogin2.php";
      PostMethod postMethod = new PostMethod(url);
      // 填入各个表单域的值
      NameValuePair[] data = { new NameValuePair("id", "youUserName"),
      new NameValuePair("passwd", "yourPwd") };
      // 将表单的值放入postMethod中
      postMethod.setRequestBody(data);
      // 执行postMethod
      int statusCode = httpClient.executeMethod(postMethod);
      // HttpClient对于要求接受后继服务的请求,象POST和PUT等不能自动处理转发
      // 301或者302
      if (statusCode == HttpStatus.SC_MOVED_PERMANENTLY || 
      statusCode == HttpStatus.SC_MOVED_TEMPORARILY) {
          // 从头中取出转向的地址
          Header locationHeader = postMethod.getResponseHeader("location");
          String location = null;
          if (locationHeader != null) {
           location = locationHeader.getValue();
           System.out.println("The page was redirected to:" + location);
          } else {
           System.err.println("Location field value is null.");
          }
          return;
      }
      

    完整的程序代码请参见附件中的test.PostSample

    使用HttpClient过程中常见的一些问题

    下面介绍在使用HttpClient过程中常见的一些问题。

    字符编码

    某目标页的编码可能出现在两个地方,第一个地方是服务器返回的http头中,另外一个地方是得到的html/xml页面中。

    • 在http头的Content-Type字段可能会包含字符编码信息。例如可能返回的头会包含这样子的信息:Content-Type: text/html; charset=UTF-8。这个头信息表明该页的编码是UTF-8,但是服务器返回的头信息未必与内容能匹配上。比如对于一些双字节语言国家,可能服务器返回的编码类型是UTF-8,但真正的内容却不是UTF-8编码的,因此需要在另外的地方去得到页面的编码信息;但是如果服务器返回的编码不是UTF-8,而是具体的一些编码,比如gb2312等,那服务器返回的可能是正确的编码信息。通过method对象的getResponseCharSet()方法就可以得到http头中的编码信息。
    • 对于象xml或者html这样的文件,允许作者在页面中直接指定编码类型。比如在html中会有<meta http-equiv="Content-Type" content="text/html; charset=gb2312"/>这样的标签;或者在xml中会有<?xml version="1.0" encoding="gb2312"?>这样的标签,在这些情况下,可能与http头中返回的编码信息冲突,需要用户自己判断到底那种编码类型应该是真正的编码。

    自动转向

    根据RFC2616中对自动转向的定义,主要有两种:301和302。301表示永久的移走(Moved Permanently),当返回的是301,则表示请求的资源已经被移到一个固定的新地方,任何向该地址发起请求都会被转到新的地址上。302表示暂时的转向,比如在服务器端的servlet程序调用了sendRedirect方法,则在客户端就会得到一个302的代码,这时服务器返回的头信息中location的值就是sendRedirect转向的目标地址。

    HttpClient支持自动转向处理,但是象POST和PUT方式这种要求接受后继服务的请求方式,暂时不支持自动转向,因此如果碰到POST方式提交后返回的是301或者302的话需要自己处理。就像刚才在POSTMethod中举的例子:如果想进入登录BBS后的页面,必须重新发起登录的请求,请求的地址可以在头字段location中得到。不过需要注意的是,有时候location返回的可能是相对路径,因此需要对location返回的值做一些处理才可以发起向新地址的请求。

    另外除了在头中包含的信息可能使页面发生重定向外,在页面中也有可能会发生页面的重定向。引起页面自动转发的标签是:<meta http-equiv="refresh" content="5; url=http://www.ibm.com/us">。如果你想在程序中也处理这种情况的话得自己分析页面来实现转向。需要注意的是,在上面那个标签中url的值也可以是一个相对地址,如果是这样的话,需要对它做一些处理后才可以转发。



    展开全文
  • 本质上来讲, PUT和POST极为相似,都是向服务器发送数据,但它们之间有一个重要区别,PUT通常指定了资源的存放位置,而POST则没有,POST的数据存放位置由服务器自己决定。举个例子:如一个用于提交博文的URL,/add...
  • 一、什么是PUT请求PUT请求是请求服务器存储一个资源,并用Request-URI作为其标识,跟POST类似,但不常用,PUT请求比较少见。HTML表单也不支持这个。本质上来讲, PUT和POST极为相似,都是向服务器发送数据,但它们...

    一、什么是PUT请求

    PUT请求是请求服务器存储一个资源,并用Request-URI作为其标识,跟POST类似,但不常用,PUT请求比较少见。HTML表单也不支持这个。本质上来讲, PUT和POST极为相似,都是向服务器发送数据,但它们之间有一个重要区别,PUT通常指定了资源的存放位置,而POST则没有,POST的数据存放位置由服务器自己决定。举个例子:如一个用于提交博文的URL,/addBlog。如果用PUT,则提交的URL会是像这样的”/addBlog/abc123”,其中abc123就是这个博文的地址。而如果用POST,则这个地址会在提交后由服务器告知客户端。目前大部分博客都是这样的。显然,PUT和POST用途是不一样的。具体用哪个还取决于当前的业务场景。

    二、POST和PUT的请求根本区别

    有的观点认为,应该用POST来创建一个资源,用PUT来更新一个资源;有的观点认为,应该用PUT来创建一个资源,用POST来更新一个资源;还有的观点认为可以用PUT和POST中任何一个来做创建或者更新一个资源。这些观点都只看到了风格,争论起来也只是争论哪种风格更好,其实,用PUT还是POST,不是看这是创建还是更新资源的动作,这不是风格的问题,而是语义的问题。在HTTP中,PUT被定义为idempotent的方法,POST则不是,这是一个很重要的区别。

    三、在代码中如何应用

    我们先来看看AFNetworking中PUT和POST方法怎么用:

    //POST方法

    - (nullable NSURLSessionDataTask *)POST:(NSString *)URLString

    parameters:(nullable id)parameters

    constructingBodyWithBlock:(nullable void (^)(id formData))block

    progress:(nullable void (^)(NSProgress *uploadProgress)) uploadProgress

    success:(nullable void (^)(NSURLSessionDataTask *task, id _Nullable responseObject))success

    failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError *error))failure;

    //PUT方法

    - (nullable NSURLSessionDataTask *)PUT:(NSString *)URLString

    parameters:(nullable id)parameters

    success:(nullable void (^)(NSURLSessionDataTask *task, id _Nullable responseObject))success

    failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError *error))failure;

    发现参数中只有URLString和parameters,相对于POST请求来说少了一个formData的参数,没有地方把数据拼接上去,我曾经尝试把Data放到parameters中并不好用,在网上搜索了很多也没找到合适的解决办法,只能换一种方式了。

    四、解决办法

    在用AFNetworking进行PUT请求不好用之后,我想过是否用通过系统NSURLSessionTask来实现PUT请求,但是想想自己写太麻烦了,就尝试着用ASIHTTPRequest来尝试一下,发现ASIHTTPRequest还是很好用的

    下面贴出代码:

    - (void)uploadData:(NSData *)data uploadUrl:(NSString *)uploadUrl {

    ASIHTTPRequest * fileUpRequest = [ASIHTTPRequest requestWithURL:[NSURL URLWithString:uploadUrl]];

    fileUpRequest.delegate = self;

    //设置请求超时时间为60秒

    [fileUpRequest setTimeOutSeconds:60.f];

    //设置请求超时时间后再次尝试请求的次数

    [fileUpRequest setNumberOfTimesToRetryOnTimeout:2];

    //将data拼接进去

    [fileUpRequest appendPostData:data];

    //设置请求方式为PUT

    [fileUpRequest setRequestMethod:@"PUT"];

    //设置上传失败的回调方法

    [fileUpRequest setDidFailSelector:@selector(uploadFailed:)];

    //设置上传成功的回调方法

    [fileUpRequest setDidFinishSelector:@selector(uploadFinished:)];

    //显示精确的上传进度

    fileUpRequest.showAccurateProgress = YES;

    //开始异步请求

    [fileUpRequest startAsynchronous];

    }

    总结

    到这里我的问题已经解决,以上就是这篇文章的全部内容了,希望本文的内容对各位iOS开发者们能有所帮助,如果有疑问大家可以留言交流。

    展开全文
  • GET:获取数据 POST:提交数据 HEAD:请求头信息 PUT:上传文档到服务器 DELETE:删除远程服务器上的某个文档 OPTION:本地环境请求接口的时候,每次请求接口之前都会多一次OPTIONS请求
  • GET 获取指定资源 ...POST 2M 指定资源提交数据进行处理请求,在RESTful风格中用于新增资源 HE A D 获取指定资源头部...2,配置服务器put请求方式: 1> n 打开终端 p cd /etc/apache2 p ...
  • 1、GET请求 相当于数据可查询中的select操作一样,查询数据用的, 请求URL中会出现请求参数和值,理论最大能提交1024字节 一般用于各种数据查询操作 2、POST请求 ...3、PUT请求 一般是向服务器...
  • 向服务器提交数据,请求数据在报文body里 发送一个修改数据的请求,需求数据要从新创建 用于创建,更新,删除资源,查询资源都可以,是不幂等的 put 向服务器提交数据,请求数据在报文body里 发送一个...
  • Http定义了与 服务器的交互方法,其中除了一般我们用的最多的GET,POST 其实还有PUT和DELETE根据RFC2616标准(现行的HTTP/1.1)其实还有OPTIONS,GET,HEAD,POST,PUT...简单地说:通常用于向服务器发送请求,如果URI不存在
  • 2,配置服务器put请求方式: 代码如下: 1> n 打开终端p cd /etc/apache2p sudo vim httpd.conf n 在vim中输入p /httpd-dav.conf• 查找httpd-dav.confp 按0将光标移动至行首 p 按x将行首的#删除p 输入:wq,保存并...
  • POST:向服务器提交数据。这个方法用途广泛,几乎目前所有的提交操作都是靠这个完成。 PUT:这个方法比较少见。HTML表单也不支持这个。本质上来讲, PUT和POST极为相似,都是向服务器发送数据,但它们之间有一个...
  • POST:向服务器提交数据。这个方法用途广泛,几乎目前所有的提交操作都是靠这个完成。 PUT:这个方法比较少见。HTML表单也不支持这个。本质上来讲, PUT和POST极为相似,都是向服务器发送数据,但它们之间有一个...
  • 取回请求URL标志的任何信息,在浏览器的地址栏中输入网址的方式访问网页时,浏览器采用GET方法向服务器获取资源。 (2)Post方法.为请求报文准备数据,即要求被请求服务器接受附在请求消息后面的数据,常用于提交表单...
  • axios 请求配置中,transformRequest配置允许在向服务器发送前,修改请求数据。 // `transformRequest` 允许在向服务器发送前,修改请求数据 // 只能用在 'PUT', 'POST' 和 'PATCH' 这几个请求方法 // 后面...
  • 博客园 首页 新随笔 联系 管理 订阅 随笔- 89 文章- 0 评论- 1372 ...让python bottle框架...PS:经过调试和查找资料发现,OPTIONS是状态类型查询,即向服务器提交信息后不返回任何信息,只将执行状态(200状态)...
  • 感谢大神分享 ... GET 获取指定资源 POST 2M 指定资源提交数据进行处理请求,在RESTful风格中用于...2,配置服务器put请求方式: 复制代码代码如下:  1&gt;   n 打开终端p cd /etc/apache2p sudo vim...
  • GET 请求是最常见的请求类型,最常用于向服务器查询某些信息。 必要时,可以将查询字符串参数追加到 URL 末尾,以便将信息发送给服务器。 对于 XHR 而言,传入 open() 方法的 URL 末尾的查询字符串必须使用...
  • RestTemplate的get和post,put,delete请求

    千次阅读 2017-08-03 10:45:08
    1. get是从服务器上获取数据,post是向服务器传送数据。 2. get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。post是通过HTTP post机制,将表单内各个字段...
  • GET : 请求页面, 并返回页面...PUT : 从客户端向服务器传送的数据取代指定文档中的内容。 DELETE : 请求服务器删除指定的页面。 CONNECT : 把服务器当作跳板,让服务器代替客户端访问其他页面。 OP...
  • 通过上篇博文的方法处理后,进入代码调试后发现ajax获取不了服务器端返回的数据,度娘后发现原来AJAX的OPTIONS请求方式是状态类型查询,即向服务器提交信息后不返回任何信息,只将执行状态(200状态)通知客户端,也...

空空如也

空空如也

1 2 3 4 5 ... 19
收藏数 370
精华内容 148
关键字:

向服务器提交put请求