内容长度PHP头。 正确的计算方法

我需要发一份XML文件以base64编码和其他数据在一个变量中$content。 我不确定内容长度计算以正确的方式引起我的网络服务告诉我有一个错误(无效的参数输入)。 我确定文件是正确的。 所以我唯一的疑问是长度计算?

这是我的脚本:

$base64 = base64_encode(file_get_contents("file.xml"));

$post = "/services/invoice/upload";

$content = array(
    "dataFile" => $base64,
    "credential" => "",
    "domain" => ""
);

try {

    $ch = curl_init();

    $header = array(
        "Content-type: application/json;charset=UTF-8",
        "Accept: application/json",
        "Authorization: Bearer nfsedkvcsjocnso", //token
        "Content-Length:" . strlen(json_encode($content)), //
        "Host: localhost:8080"
      );

    curl_setopt($ch, CURLOPT_URL, "http://xxxxxxx.com" . $post);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($content));
    curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

    // receive server response



    $server_output = curl_exec($ch);

    if ($server_output === false) {
        throw new Exception(curl_error($ch), curl_errno($ch));
    }

    var_dump($server_output);

    curl_close($ch);

} catch(Exception $e) {

    trigger_error(sprintf('Curl failed with error #%d: %s',$e->getCode(), $e->getMessage()), E_USER_ERROR);

}

这是由WS规范(示例):

POST /services/invoice/upload HTTP/1.1
Accept: application/json
Authorization: Bearer NLOGDVXLVaF3tzmnVPkTwpkuh7dG0i09uSCcog3u+rE=
Content-Type: application/json;charset=UTF-8
Content-Length: 90
Host: localhost:8080

{
  "dataFile" : "dGVzdA==",
  "credential" : "cred_firma", //can be empty
  "domain" : "dom_firma" //can be empty
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要计算STL模型的体积,可以使用PHP编程语言来实现。首先,需要确保安装了PHP的STL模块(如"threed-model")。 接下来,可以按照以下步骤进行计算: 1. 读取STL文件:使用`file_get_contents`函数读取STL文件,并将其存储在一个字符串变量中。 2. 解析STL文件:将读取到的STL数据转换为数组,以便进一步处理。可以使用`explode`函数将字符串按行分解为数组元素,然后使用`trim`函数去除每行的空格。 3. 计算三角形面积:遍历STL数组,通过解析每个三角形的顶点坐标来计算其面积。可以使用海伦公式或向量叉积来计算三角形面积。 4. 计算模型体积:将所有三角形的面积相加,即可得到整个STL模型的体积。 下面是一个示例代码: ```php // 读取STL文件 $stlData = file_get_contents('path/to/stl/file.stl'); // 解析STL数据为数组 $stlArray = explode("\n", trim($stlData)); // 计算三角形面积 $triangleAreas = array(); foreach ($stlArray as $line) { if (strpos($line, 'facet normal') !== false) { // 解析顶点坐标 $vertex1 = explode(' ', trim($stlArray[$i + 2])); $vertex2 = explode(' ', trim($stlArray[$i + 3])); $vertex3 = explode(' ', trim($stlArray[$i + 4])); // 计算面积并存储 $triangleAreas[] = calculateTriangleArea($vertex1, $vertex2, $vertex3); } } // 计算模型体积 $modelVolume = array_sum($triangleAreas); // 输出结果 echo 'STL模型的体积为:' . $modelVolume . '立方单位。'; // 计算三角形面积的函数 function calculateTriangleArea($v1, $v2, $v3) { // 在这里使用合适的方法来计算三角形的面积 } ``` 以上是一个基本的框架,你需要根据实际情况来解析STL数据和计算三角形面积的方法。另外,注意STL文件的单位和坐标系,以便正确计算体积。 ### 回答2: 在PHP中计算STL模型的体积可以通过以下步骤来实现: 1. 读取STL文件:首先,需要使用PHP的文件操作函数打开STL文件,并读取其中的内容。STL文件通常是以二进制格式存储,需要使用相应的方法解析和读取其中的数据。 2. 解析STL数据:解析STL文件的数据结构,可以根据STL文件的格式进行解析。STL文件通常包含模型的三角面片(facet)信息,每个面片由三个顶点坐标和法向量组成。 3. 计算面片体积:对于每个面片,可以使用基本几何计算方法计算其面积。可以通过计算基准点到面片三个顶点的向量叉乘长度的一半来获得面片的面积。 4. 累加面片体积:遍历所有的面片,将每个面片的面积累加起来,即可得到整个模型的体积。 5. 输出结果:将计算出的模型体积进行格式化和显示,可以通过echo语句将结果输出到网页上或保存到文件中。 注意事项: - STL文件可能包含多个面片,需要将所有面片的体积累加起来才能得到整个模型的体积。 - 在进行计算时,需要注意单位的一致性,比如长度单位的一致性。有时需要将模型的坐标进行转换或缩放,以使得计算结果的单位与预期一致。 综上所述,通过解析STL文件的数据结构,遍历计算每个面片的体积,并累加得到整个模型的体积,即可在PHP中计算STL模型的体积。 ### 回答3: 在PHP中计算STL模型的体积可以按照以下步骤进行。 首先,需要解析STL文件并提取出三角面片的顶点坐标。STL文件通常包含一系列三角形面片和每个面片的法向量。 其次,计算每个三角形面片的面积。可以使用向量的叉积来计算三角形的面积。首先,计算出两个边向量,然后将边向量的叉积除以2即可得到三角形的面积。对于三维向量(u1, v1, w1)和(v2, w2, w2),其叉积计算公式为:(v1 * w2 - v2 * w1, w1 * u2 - w2 * u1, u1 * v2 - u2 * v1)。计算出每个三角形的面积后,可以将它们累加得到模型的总体积。 最后,根据模型的单位确定体积的单位。例如,如果STL文件中的三角形面片的单位是毫米,则累加的面积结果也是毫米单位的。如果需要以立方厘米为单位表示体积,可以将累加的面积乘以1/1000。 综上所述,在PHP中计算STL模型体积的过程是:解析STL文件,提取出顶点坐标,计算每个三角形面片的面积,并将结果累加得到总体积。最后,根据单位将体积转换为合适的单位。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值