String Parsing - What am I messing up?

Surely I need one string?

Exactly. You need one string and zero Strings.

String and string are completely different things.

Actually, you may not even need a string. You know what character marks the start of the value. When you see that marker, set some variable to 0 and set a flag that indicates that "recording" is happening. Read the next character. If "recording", and the character is not the "stop recording" character, multiply the variable you set to 0 by 10 and add the new character as a digit. If the character IS the "stop recording" character, stop recording.

bool recording = false;
int brightnessVal;
char startMarker = '=';
char endMarker = '&';
while(client.connected())
{
   while(client.available() > 0)
   {
      char c = client.read();
      if(c == startMarker)
      {
         recording = true;
         brightnessVal = 0;
      }
      else if(c == endMarker)
      {
         recording = false;
      }
      else
      {
         if(recording)
         {
            if(isdigit(c))
            {
               brightnessVal *= 10;
               brightnessVal += c - '0';
             }
             else
                recording = false;
         }
      }
   }
}

The isdigit() test makes sure that the S in Send, after the 2nd equal sign doesn't mess up brightnessVal (and that the 1.1 at the end don't result in brightness being 10011).