国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

java restful application/x-www-form-urlencoded 傳遞參數(shù)

這篇具有很好參考價(jià)值的文章主要介紹了java restful application/x-www-form-urlencoded 傳遞參數(shù)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

情景:

? ? ? ? 在發(fā)送短信的時(shí)候,要使用x-www-form-urlencoded的編碼格式進(jìn)行傳遞參數(shù)。?

具體要求:

參數(shù)名稱

說明

備注

userId

用戶名

timespan

時(shí)間戳

格式為yyyyMMddHHmmss

password

密碼

此處用原始密碼+時(shí)間戳

做MD5加密,32位大寫格式

?

phone

手機(jī)號(hào)

多個(gè)用英文逗號(hào)隔開

msgType

編碼類型

選填,如果不填默認(rèn)為GBK,可以選填GBK

或者UTF8/UTF-8

content

內(nèi)容

做base64加密操作,編碼方式

使用msgType中的方式,如果msgType有值的話

application/x-www-form-urlencoded 的情況下,restful那邊要怎么處理參數(shù)呢?

一,HTTP上傳的基本知識(shí) ? ? ?

? ? ? ? ?在Form元素的語(yǔ)法中,EncType表明提交數(shù)據(jù)的格式 用 Enctype 屬性指定將數(shù)據(jù)回發(fā)到服務(wù)器時(shí)瀏覽器使用的編碼類型。
?? ??? ? application/x-www-form-urlencoded: 窗體數(shù)據(jù)被編碼為名稱/值對(duì)。這是標(biāo)準(zhǔn)的編碼格式。?
?? ??? ? multipart/form-data: 窗體數(shù)據(jù)被編碼為一條消息,頁(yè)上的每個(gè)控件對(duì)應(yīng)消息中的一個(gè)部分。?
?? ??? ? text/plain:窗體數(shù)據(jù)以純文本形式進(jìn)行編碼,其中不含任何控件或格式字符。
補(bǔ)充
? ? ? ? ?form的enctype屬性為編碼方式,常用有兩種:application/x-www-form-urlencoded和multipart/form-data,默認(rèn)為application /x-www-form-urlencoded。

? ? ? ? ?當(dāng)action為get時(shí)候,瀏覽器用x-www-form-urlencoded的編碼方式把form數(shù)據(jù)轉(zhuǎn)換成一個(gè)字串(name1=value1& amp;name2=value2...),然后把這個(gè)字串a(chǎn)ppend到url后面,用?分割,加載這個(gè)新的url。

? ? ? ? ?當(dāng)action為post時(shí)候,瀏覽器把form數(shù)據(jù)封裝到http body中,然后發(fā)送到server。

? ? ? ? 如果沒有type=file的控件,用默認(rèn)的application/x-www-form-urlencoded就可以了。但是如果有type=file的話,就要用到multipart/form-data了。瀏覽器會(huì)把整個(gè)表單以控件為單位分割,并為每個(gè)部分加上 Content-Disposition(form-data或者file),Content-Type(默認(rèn)為text/plain),name(控件 name)等信息,并加上分割符(boundary)。

??這部分來自:

https://www.cnblogs.com/lexus/archive/2012/03/19/2405526.html#!comments

作者:lexus

2,處理

設(shè)置?application/x-www-form-urlencoded

設(shè)置表頭,參數(shù)用MultiValueMap<String, String> 的格式

  public String sendNoticeContent(MultiValueMap<String, String> param) {
        String url = "xxxx";
         
        try {
            HttpHeaders headers = new HttpHeaders();
            headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
            RestTemplate restTemplate=new RestTemplate();
            HttpEntity<MultiValueMap<String, String>> httpEntity = new HttpEntity<MultiValueMap<String, String>>(param, headers);
            logger.info("短信接口接口請(qǐng)求url:{}, param: {}", url, JSON.toJSONString(httpEntity));
            String resultStr = restTemplate.postForObject(url, param, String.class);
            logger.info("sendNoticeContent result {}", resultStr);
            // 如果返回字符串以-開頭,也則提交失敗,否則為提交成功
            if(StringUtils.isBlank(resultStr) || resultStr.startsWith("-")){
                throw new Exception("發(fā)送短信請(qǐng)求失敗", resultStr +" "+ResultCodeEnum.getCodeMsgMap().get(resultStr));
            }
            return resultStr;
        } catch (Exception e) {
            e.printStackTrace();
            throw new Exception("發(fā)送短信請(qǐng)求失敗", e.getMessage());
        }
    }

異常碼枚舉類

import java.util.HashMap;
import java.util.Map;

public enum ResultCodeEnum {

    NOT_USER("-101", "用戶不存在"),ERROR_PWD("-102", "密碼不正確"),NOT_SUFFICIENT_FUNDS("-103", "余額不足"),
    ERROR_PARAM("-104", "參數(shù)格式有誤"),ERROR_EXTEND_CODE("-105", "擴(kuò)展碼錯(cuò)誤"),
    OVER_SIZE("-106", "內(nèi)容超長(zhǎng)(500字)或內(nèi)容為空"),ERROR_USER_STATE("-107", "用戶狀態(tài)異常"),
    ERROR_AUTH_IP("-108", "Ip鑒權(quán)失敗"),NOT_PARSE_CONTENT("-109", "內(nèi)容解析異常"),UNKNOW_ERROR("-990", "未知異常");

    private String code;
    private String msg;

    ResultCodeEnum(String code, String msg) {
        this.code = code;
        this.msg = msg;
    }

    public String getCode() {
        return code;
    }

    public String getMsg() {
        return msg;
    }

    public static Map<String, String> getCodeMsgMap() {
        Map<String, String> codeMsgMap = new HashMap<>();
        for (ResultCodeEnum m : ResultCodeEnum.values()) {
            codeMsgMap.put(m.getCode(), m.getMsg());
        }
        return codeMsgMap;
    }
}

參數(shù)處理

public String sendNoticeConent(String userId, String password, String content, String phone){
        String timespan = DateFormatUtils.format(new Date(), "yyyyMMddHHmmss");

        MultiValueMap<String, String> params= new LinkedMultiValueMap<>();
        params.put("userId", Collections.singletonList(userId));
        params.put("password", Collections.singletonList(Md5Utils.md5WithTimeStamp(password, timespan)));
        params.put("timespan", Collections.singletonList(timespan));
        params.put("content", Collections.singletonList(Base64Utils.encode(content)));
        params.put("phone", Collections.singletonList(phone));
        params.put("msgType", Collections.singletonList("UTF-8")); // 跟encode保持一致
        return restResponsibleService.sendNoticeContent(params);
    }

MD5加密

引用包:

implementation 'commons-codec:commons-codec:1.9'

代碼:


    public static String md5WithTimeStamp(String text, String currentTimeSuffix ){
        String content = text+currentTimeSuffix;
        return DigestUtils.md5Hex(content).toUpperCase();
    }

base64

import java.io.UnsupportedEncodingException;
import java.util.Base64;
import java.util.regex.Pattern;

public class Base64Utils {
    public static void main(String args[]) {
        String sql = "select * from staff";
        System.out.println(sql);
        System.out.println(encode(sql));
        System.out.println(decode(encode(sql)));
        System.out.println(isBase64(encode(sql)));
        System.out.println(isBase64(decode(encode(sql))));
    }

    private static final String UTF_8 = "UTF-8";
    private static Base64.Encoder encoder;
    //即為安全的編碼方式,替換“+” “/” “-”為“_”
    private static Base64.Decoder decoder;

    static {
        encoder = Base64.getEncoder();
        decoder = Base64.getDecoder();
    }
    //encode
    public static byte[] encode(byte[] bytes) {
        return encoder.encode(bytes);
    }

    public static String encode(String content) {
        byte[] encode = encode(content.getBytes());
        try {
            return new String(encode, UTF_8);
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        return null;
    }
    public static String encode2String(byte[] bytes) {
        return encoder.encodeToString(bytes);
    }

    public static byte[] encode2Byte(String content) {
        return encode(content.getBytes());
    }

    public static byte[] decode(byte[] bytes) {
        return decoder.decode(bytes);
    }

    public static byte[] decode2Byte(String content) {
        return decoder.decode(content.getBytes());
    }

    public static String decode2String(byte[] bytes) {
        try {
            return new String(decoder.decode(bytes),UTF_8);
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        return null;
    }

    public static String decode(String content) {
        byte[] decode = decode(content.getBytes());
        try {
            return new String(decode, UTF_8);
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        return null;
    }

    public static Boolean isBase64(String str) {
         String base64Pattern = "^([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{4}|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{2}==)$";
         return Pattern.matches(base64Pattern, str);
    }
}

postman直接請(qǐng)求

java restful application/x-www-form-urlencoded 傳遞參數(shù),java,java,restful,urlencoded

總結(jié):

? ? ? 使用restful請(qǐng)求application/x-www-form-urlencoded格式的內(nèi)容,需要設(shè)置表頭,參數(shù)用MultiValueMap<String, String> 的格式來處理。文章來源地址http://www.zghlxwxcb.cn/news/detail-623904.html

到了這里,關(guān)于java restful application/x-www-form-urlencoded 傳遞參數(shù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • java實(shí)現(xiàn)postman為x-www-form-urlencoded的調(diào)用

    1.客戶端實(shí)現(xiàn) 導(dǎo)入http-client jar。 2.服務(wù)端實(shí)現(xiàn)

    2024年02月11日
    瀏覽(18)
  • 微信小程序使用POST請(qǐng)求后臺(tái)數(shù)據(jù)失敗,報(bào)錯(cuò)為Content type ‘a(chǎn)pplication/x-www-form-urlencoded;charset=UTF-8‘ not supported

    微信小程序使用POST請(qǐng)求后臺(tái)數(shù)據(jù)失敗,報(bào)錯(cuò)為Content type ‘a(chǎn)pplication/x-www-form-urlencoded;charset=UTF-8‘ not supported

    ? ? ?錯(cuò)誤代碼 后臺(tái)接口 微信小程序請(qǐng)求方式 錯(cuò)誤原因 ?解決方法 正確代碼 ?另外,打印返回的結(jié)果對(duì)象res時(shí),不能使用字符串拼接,否則只能得到[Object object] 巨坑! 參考文章 第一,請(qǐng)求的數(shù)據(jù)類型是JSON格式,而后臺(tái)接收前端小程序傳來的數(shù)據(jù)類型是JSON字符串,后端的

    2024年02月08日
    瀏覽(36)
  • x-www-form-urlencoded接收方式代碼示例

    x-www-form-urlencoded接收方式代碼示例

    數(shù)據(jù)回推方式是 “x-www-form-urlencoded”,可以選擇使用 GET 或 POST 方法來接收數(shù)據(jù)回推。 使用 GET 方法接收數(shù)據(jù)回推時(shí),您可以將數(shù)據(jù)作為查詢參數(shù)附加在請(qǐng)求的 URL 中。例如: http://example.com/callback?param1=value1param2=value2 在服務(wù)器端,可以使用相應(yīng)的框架或庫(kù)從請(qǐng)求的查詢參數(shù)中

    2024年01月19日
    瀏覽(19)
  • Postman form-data、x-www-form-urlencoded的區(qū)別

    Postman form-data、x-www-form-urlencoded的區(qū)別

    我們?cè)谄綍r(shí)的postman請(qǐng)求調(diào)試,以及web的http請(qǐng)求開發(fā)時(shí),常常能看到以下幾種傳參的形式 form-data、x-www-form-urlencoded、raw、binary,那么這些請(qǐng)求方式的區(qū)別是什么呢? 1 、 form-data: 就是http請(qǐng)求中的multipart/form-data,它會(huì)將表單的數(shù)據(jù)處理為一條消息,以標(biāo)簽為單元,用分隔符分開

    2024年01月24日
    瀏覽(32)
  • Vue給接口傳x-www-form-urlencoded類型參數(shù)

    今天在前端調(diào)用后端接口的時(shí)候出現(xiàn)了很多問題,出現(xiàn)問題的原因是跟后端沒有及時(shí)的去溝通,自己一個(gè)人參考swagger接口文檔悶頭苦干。結(jié)果接口一直報(bào)400XSS參數(shù)攻擊異常,沒辦法跟后端對(duì)接后才成功調(diào)用接口。 如何給接口傳x-www-form-urlencoded類型的參數(shù)呢??? 參考一下代

    2024年02月13日
    瀏覽(19)
  • form-data和x-www-form-urlencoded的區(qū)別和延伸

    form-data和x-www-form-urlencoded,它們完整的表示是multipart/form-data和application/x-www-form-urlencoded。 為了方便,我們下面就用form-data和x-www-form-urlencoded表示。 兩者的區(qū)別,可謂是老生常談,隨便百度一下,也是有大堆資料??墒俏疫€想用一篇文章來總結(jié)一下,主要有兩點(diǎn)原因: form-

    2024年02月12日
    瀏覽(26)
  • SAP 調(diào)取http的x-www-form-urlencoded形式的接口

    SAP 調(diào)取http的x-www-form-urlencoded形式的接口

    一、了解下x-www-form-urlencoded形式對(duì)于SAP來說有啥區(qū)別 簡(jiǎn)單來說, 1.raw格式就是標(biāo)準(zhǔn)的json格式:{“Name”:“John Smith”,“Age”: 23} 2.x-www格式是要轉(zhuǎn)化一下的:Name=John+SmithAge=23 字段與字段相互連接要用 符號(hào),空格用 + 連接。所以說當(dāng)你的關(guān)鍵參數(shù)里面帶有這些特殊符號(hào)時(shí),就

    2024年02月04日
    瀏覽(24)
  • 實(shí)例教程:使用SpringBoot接收form-data和x-www-form-urlencoded數(shù)據(jù)

    實(shí)例教程:使用SpringBoot接收form-data和x-www-form-urlencoded數(shù)據(jù)

    【辰兮要努力】:hello你好我是辰兮,很高興你能來閱讀,昵稱是希望自己能不斷精進(jìn),向著優(yōu)秀程序員前行! 博客來源于項(xiàng)目以及編程中遇到的問題總結(jié),偶爾會(huì)有讀書分享,我會(huì)陸續(xù)更新Java前端、后臺(tái)、數(shù)據(jù)庫(kù)、項(xiàng)目案例等相關(guān)知識(shí)點(diǎn)總結(jié),感謝你的閱讀和關(guān)注,希望我

    2024年02月19日
    瀏覽(29)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包