• [CodeReserve]GetAttributeFromHeader


    以下代码可以从http header中获取一个attribute的值。如:

    String b = GetAttributeFromHeader(ContentType, "boundary");

    private static String GetAttributeFromHeader(String headerValue, String attrName) {
        if (headerValue == null)
            return null; 
    
        int l = headerValue.Length; 
        int k = attrName.Length; 
    
        // find properly separated attribute name 
        int i = 1; // start searching from 1
    
        while (i < l) {
            i = CultureInfo.InvariantCulture.CompareInfo.IndexOf(headerValue, attrName, i, CompareOptions.IgnoreCase); 
            if (i < 0)
                break; 
            if (i+k >= l) 
                break;
     
            char chPrev = headerValue[i-1];
            char chNext = headerValue[i+k];
            if ((chPrev == ';' || chPrev == ',' || Char.IsWhiteSpace(chPrev)) && (chNext == '=' || Char.IsWhiteSpace(chNext)))
                break; 
    
            i += k; 
        } 
    
        if (i < 0 || i >= l) 
            return null;
    
        // skip to '=' and the following whitespaces
        i += k; 
        while (i < l && Char.IsWhiteSpace(headerValue[i]))
            i++; 
        if (i >= l || headerValue[i] != '=') 
            return null;
        i++; 
        while (i < l && Char.IsWhiteSpace(headerValue[i]))
            i++;
        if (i >= l)
            return null; 
    
        // parse the value 
        String attrValue = null; 
    
        int j; 
    
        if (i < l && headerValue[i] == '"') {
            if (i == l-1)
                return null; 
            j = headerValue.IndexOf('"', i+1);
            if (j < 0 || j == i+1) 
                return null; 
    
            attrValue = headerValue.Substring(i+1, j-i-1).Trim(); 
        }
        else {
            for (j = i; j < l; j++) {
                if (headerValue[j] == ' ' || headerValue[j] == ',') 
                    break;
            } 
     
            if (j == i)
                return null; 
    
            attrValue = headerValue.Substring(i, j-i).Trim();
        }
     
        return attrValue;
    } 
  • 相关阅读:
    [zt]petshop4.0 详解之二
    HOW TO: Implement a DataSet JOIN helper class in Visual C# .NET(DataSetHelper)
    DVGPrinter 设置列宽
    [转载]ASP.NET 的学习流程
    初级版FAQ
    [转]PetShop的系统架构设计(1)
    [zt] petshop4.0 详解之三
    mssql2000 jdbc驱动设置
    自动设置环境变量
    Ubuntu中VirtualBox不能使用USB(此法不通)
  • 原文地址:https://www.cnblogs.com/volnet/p/1416921.html
Copyright © 2020-2023  润新知